{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# BLM example" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# Add PyTwoWay to system path (do not run this)\n", "# import sys\n", "# sys.path.append('../../..')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Import the PyTwoWay package\n", "\n", "Make sure to install it using `pip install pytwoway`." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import bipartitepandas as bpd\n", "import pytwoway as tw\n", "from pytwoway import constraints as cons\n", "from matplotlib import pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## First, check out parameter options\n", "\n", "Do this by running:\n", "\n", "- BLM - `tw.blm_params().describe_all()`\n", "\n", "- Clustering - `bpd.cluster_params().describe_all()`\n", "\n", "- Cleaning - `bpd.clean_params().describe_all()`\n", "\n", "- Simulating - `bpd.sim_params().describe_all()`\n", "\n", "Alternatively, run `x_params().keys()` to view all the keys for a parameter dictionary, then `x_params().describe(key)` to get a description for a single key." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Second, set parameter choices" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "nl = 3 # Number of worker types\n", "nk = 4 # Number of firm types\n", "blm_params = tw.blm_params({\n", " 'nl': nl, 'nk': nk,\n", " 'a1_mu': 0, 'a1_sig': 1.5, 'a2_mu': 0, 'a2_sig': 1.5,\n", " 's1_low': 0.5, 's1_high': 1.5, 's2_low': 0.5, 's2_high': 1.5\n", "})\n", "cluster_params = bpd.cluster_params({\n", " 'measures': bpd.measures.CDFs(),\n", " 'grouping': bpd.grouping.KMeans(n_clusters=nk),\n", " 'is_sorted': True,\n", " 'copy': False\n", "})\n", "clean_params = bpd.clean_params({\n", " 'drop_returns': 'returners',\n", " 'copy': False\n", "})\n", "sim_params = bpd.sim_params({\n", " 'nl': nl, 'nk': nk,\n", " 'alpha_sig': 1, 'psi_sig': 1, 'w_sig': 0.6,\n", " 'c_sort': 0, 'c_netw': 0, 'c_sig': 1\n", "})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Extract data (we simulate for the example)\n", "\n", "`BipartitePandas` contains the class `SimBipartite` which we use here to simulate a bipartite network. If you have your own data, you can import it during this step. Load it as a `Pandas DataFrame` and then convert it into a `BipartitePandas DataFrame` in the next step.\n", "\n", "Note that `l` gives the true worker type and `k` gives the true firm type, while `alpha` gives the true worker effect and `psi` gives the true firm effect. We will save these columns separately.\n", "\n", "The BLM estimator uses the firm types computed via clustering, which are saved in columns `g1` and `g2`." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "sim_data = bpd.SimBipartite(sim_params).simulate()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prepare data\n", "\n", "This is exactly how you should prepare real data prior to running the BLM estimator.\n", "\n", "- First, we convert the data into a `BipartitePandas DataFrame`\n", "\n", "- Second, we clean the data (e.g. drop NaN observations, make sure firm and worker ids are contiguous, etc.)\n", "\n", "- Third, we cluster firms by their wage distributions, to generate firm classes (columns `g1` and `g2`). Alternatively, manually set the columns `g1` and `g2` to pre-estimated clusters (but make sure to [add them correctly!](https://tlamadon.github.io/bipartitepandas/notebooks/custom_columns.html#Adding-custom-columns-to-an-instantiated-DataFrame)).\n", "\n", "- Fourth, we collapse the data at the worker-firm spell level (taking mean wage over the spell)\n", "\n", "- Fifth, we convert the data into event study format\n", "\n", "Further details on `BipartitePandas` can be found in the package documentation, available [here](https://tlamadon.github.io/bipartitepandas/)." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "checking required columns and datatypes\n", "sorting rows\n", "dropping NaN observations\n", "generating 'm' column\n", "keeping highest paying job for i-t (worker-year) duplicates (how='max')\n", "dropping workers who leave a firm then return to it (how='returners')\n", "making 'i' ids contiguous\n", "making 'j' ids contiguous\n", "computing largest connected set (how=None)\n", "sorting columns\n", "resetting index\n" ] } ], "source": [ "# Convert into BipartitePandas DataFrame\n", "sim_data = bpd.BipartiteDataFrame(sim_data)\n", "# Clean and collapse\n", "sim_data = sim_data.clean(clean_params).collapse(is_sorted=True, copy=False)\n", "# Cluster\n", "sim_data = sim_data.cluster(cluster_params)\n", "# Convert to event study format\n", "sim_data = sim_data.to_eventstudy(is_sorted=True, copy=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Separate observed and unobserved data\n", "\n", "Some of the simulated data is not observed, so we separate out that data during estimation." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "sim_data_observed = sim_data.loc[:, ['i', 'j1', 'j2', 'y1', 'y2', 't11', 't12', 't21', 't22', 'g1', 'g2', 'w1', 'w2', 'm']]\n", "sim_data_unobserved = sim_data.loc[:, ['alpha1', 'alpha2', 'k1', 'k2', 'l1', 'l2', 'psi1', 'psi2']]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Separate movers and stayers data\n", "\n", "We need to distinguish movers and stayers for the estimator." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "movers = sim_data_observed.get_worker_m(is_sorted=True)\n", "jdata = sim_data_observed.loc[movers, :]\n", "sdata = sim_data_observed.loc[~movers, :]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Check the data\n", "\n", "Let's check the cleaned data." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Movers data\n" ] }, { "data": { "text/html": [ "
\n", " | i | \n", "j1 | \n", "j2 | \n", "y1 | \n", "y2 | \n", "t11 | \n", "t12 | \n", "t21 | \n", "t22 | \n", "g1 | \n", "g2 | \n", "w1 | \n", "w2 | \n", "m | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "0 | \n", "189 | \n", "141 | \n", "0.658481 | \n", "-0.302737 | \n", "0 | \n", "0 | \n", "1 | \n", "3 | \n", "0 | \n", "3 | \n", "1 | \n", "3 | \n", "1 | \n", "
1 | \n", "0 | \n", "141 | \n", "179 | \n", "-0.302737 | \n", "-0.070679 | \n", "1 | \n", "3 | \n", "4 | \n", "4 | \n", "3 | \n", "0 | \n", "3 | \n", "1 | \n", "1 | \n", "
2 | \n", "1 | \n", "3 | \n", "178 | \n", "-0.977635 | \n", "-0.138164 | \n", "0 | \n", "0 | \n", "1 | \n", "4 | \n", "1 | \n", "0 | \n", "1 | \n", "4 | \n", "1 | \n", "
3 | \n", "2 | \n", "179 | \n", "9 | \n", "0.273751 | \n", "-2.872666 | \n", "0 | \n", "2 | \n", "3 | \n", "3 | \n", "0 | \n", "1 | \n", "3 | \n", "1 | \n", "1 | \n", "
4 | \n", "2 | \n", "9 | \n", "113 | \n", "-2.872666 | \n", "-1.395046 | \n", "3 | \n", "3 | \n", "4 | \n", "4 | \n", "1 | \n", "3 | \n", "1 | \n", "1 | \n", "1 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
20331 | \n", "9923 | \n", "5 | \n", "18 | \n", "-2.439280 | \n", "-2.086203 | \n", "0 | \n", "0 | \n", "1 | \n", "1 | \n", "1 | \n", "1 | \n", "1 | \n", "1 | \n", "1 | \n", "
20332 | \n", "9923 | \n", "18 | \n", "186 | \n", "-2.086203 | \n", "0.518828 | \n", "1 | \n", "1 | \n", "2 | \n", "2 | \n", "1 | \n", "0 | \n", "1 | \n", "1 | \n", "1 | \n", "
20333 | \n", "9923 | \n", "186 | \n", "92 | \n", "0.518828 | \n", "0.440968 | \n", "2 | \n", "2 | \n", "3 | \n", "3 | \n", "0 | \n", "2 | \n", "1 | \n", "1 | \n", "1 | \n", "
20334 | \n", "9923 | \n", "92 | \n", "14 | \n", "0.440968 | \n", "-1.070705 | \n", "3 | \n", "3 | \n", "4 | \n", "4 | \n", "2 | \n", "1 | \n", "1 | \n", "1 | \n", "1 | \n", "
20335 | \n", "9924 | \n", "167 | \n", "42 | \n", "1.730241 | \n", "-0.256907 | \n", "0 | \n", "0 | \n", "1 | \n", "4 | \n", "0 | \n", "1 | \n", "1 | \n", "4 | \n", "1 | \n", "
19695 rows × 14 columns
\n", "\n", " | i | \n", "j1 | \n", "j2 | \n", "y1 | \n", "y2 | \n", "t11 | \n", "t12 | \n", "t21 | \n", "t22 | \n", "g1 | \n", "g2 | \n", "w1 | \n", "w2 | \n", "m | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
16 | \n", "9 | \n", "183 | \n", "183 | \n", "1.775003 | \n", "1.775003 | \n", "0 | \n", "4 | \n", "0 | \n", "4 | \n", "0 | \n", "0 | \n", "5 | \n", "5 | \n", "0 | \n", "
101 | \n", "55 | \n", "36 | \n", "36 | \n", "-0.154698 | \n", "-0.154698 | \n", "0 | \n", "4 | \n", "0 | \n", "4 | \n", "1 | \n", "1 | \n", "5 | \n", "5 | \n", "0 | \n", "
127 | \n", "65 | \n", "192 | \n", "192 | \n", "0.476397 | \n", "0.476397 | \n", "0 | \n", "4 | \n", "0 | \n", "4 | \n", "0 | \n", "0 | \n", "5 | \n", "5 | \n", "0 | \n", "
131 | \n", "67 | \n", "123 | \n", "123 | \n", "-0.268389 | \n", "-0.268389 | \n", "0 | \n", "4 | \n", "0 | \n", "4 | \n", "3 | \n", "3 | \n", "5 | \n", "5 | \n", "0 | \n", "
152 | \n", "78 | \n", "15 | \n", "15 | \n", "-0.318783 | \n", "-0.318783 | \n", "0 | \n", "4 | \n", "0 | \n", "4 | \n", "1 | \n", "1 | \n", "5 | \n", "5 | \n", "0 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
20111 | \n", "9820 | \n", "177 | \n", "177 | \n", "0.865980 | \n", "0.865980 | \n", "0 | \n", "4 | \n", "0 | \n", "4 | \n", "0 | \n", "0 | \n", "5 | \n", "5 | \n", "0 | \n", "
20155 | \n", "9840 | \n", "111 | \n", "111 | \n", "1.149045 | \n", "1.149045 | \n", "0 | \n", "4 | \n", "0 | \n", "4 | \n", "3 | \n", "3 | \n", "5 | \n", "5 | \n", "0 | \n", "
20213 | \n", "9866 | \n", "187 | \n", "187 | \n", "1.390672 | \n", "1.390672 | \n", "0 | \n", "4 | \n", "0 | \n", "4 | \n", "0 | \n", "0 | \n", "5 | \n", "5 | \n", "0 | \n", "
20259 | \n", "9885 | \n", "17 | \n", "17 | \n", "-1.266577 | \n", "-1.266577 | \n", "0 | \n", "4 | \n", "0 | \n", "4 | \n", "1 | \n", "1 | \n", "5 | \n", "5 | \n", "0 | \n", "
20272 | \n", "9892 | \n", "47 | \n", "47 | \n", "0.795123 | \n", "0.795123 | \n", "0 | \n", "4 | \n", "0 | \n", "4 | \n", "2 | \n", "2 | \n", "5 | \n", "5 | \n", "0 | \n", "
641 rows × 14 columns
\n", "\n", " | i | \n", "j1 | \n", "j2 | \n", "y1 | \n", "y2 | \n", "g1 | \n", "g2 | \n", "m | \n", "cat_control1 | \n", "cat_control2 | \n", "cts_control1 | \n", "cts_control2 | \n", "l | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "0 | \n", "0 | \n", "1 | \n", "-1.405170 | \n", "2.884550 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "1 | \n", "-1.597127 | \n", "-0.863375 | \n", "1 | \n", "
1 | \n", "1 | \n", "0 | \n", "1 | \n", "-2.944559 | \n", "2.699658 | \n", "0 | \n", "0 | \n", "1 | \n", "1 | \n", "1 | \n", "0.418682 | \n", "0.439516 | \n", "1 | \n", "
2 | \n", "2 | \n", "1 | \n", "0 | \n", "-1.283777 | \n", "2.810403 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "1 | \n", "-2.397280 | \n", "-0.507434 | \n", "1 | \n", "
3 | \n", "3 | \n", "0 | \n", "1 | \n", "-2.674142 | \n", "2.781658 | \n", "0 | \n", "0 | \n", "1 | \n", "1 | \n", "1 | \n", "-1.445132 | \n", "-0.133028 | \n", "1 | \n", "
4 | \n", "4 | \n", "0 | \n", "1 | \n", "-2.810683 | \n", "2.110046 | \n", "0 | \n", "0 | \n", "1 | \n", "1 | \n", "0 | \n", "-0.464561 | \n", "1.254681 | \n", "1 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
155 | \n", "155 | \n", "7 | \n", "6 | \n", "-1.076676 | \n", "1.609433 | \n", "3 | \n", "3 | \n", "1 | \n", "0 | \n", "0 | \n", "-0.801424 | \n", "1.277516 | \n", "2 | \n", "
156 | \n", "156 | \n", "6 | \n", "7 | \n", "-2.718684 | \n", "1.932711 | \n", "3 | \n", "3 | \n", "1 | \n", "1 | \n", "0 | \n", "0.094787 | \n", "-0.568200 | \n", "0 | \n", "
157 | \n", "157 | \n", "6 | \n", "7 | \n", "-2.753058 | \n", "1.655190 | \n", "3 | \n", "3 | \n", "1 | \n", "1 | \n", "0 | \n", "0.292111 | \n", "1.155452 | \n", "0 | \n", "
158 | \n", "158 | \n", "6 | \n", "7 | \n", "-2.889319 | \n", "2.357755 | \n", "3 | \n", "3 | \n", "1 | \n", "1 | \n", "1 | \n", "1.194183 | \n", "-0.255207 | \n", "0 | \n", "
159 | \n", "159 | \n", "7 | \n", "6 | \n", "-1.292902 | \n", "2.245363 | \n", "3 | \n", "3 | \n", "1 | \n", "0 | \n", "0 | \n", "0.035616 | \n", "1.193493 | \n", "1 | \n", "
160 rows × 13 columns
\n", "\n", " | i | \n", "j1 | \n", "j2 | \n", "y1 | \n", "y2 | \n", "g1 | \n", "g2 | \n", "m | \n", "cat_control1 | \n", "cat_control2 | \n", "cts_control1 | \n", "cts_control2 | \n", "l | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "160 | \n", "0 | \n", "0 | \n", "-3.065299 | \n", "2.939253 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "1 | \n", "1.280102 | \n", "-1.276638 | \n", "1 | \n", "
1 | \n", "161 | \n", "1 | \n", "1 | \n", "-3.308012 | \n", "1.882332 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0.673731 | \n", "0.978745 | \n", "2 | \n", "
2 | \n", "162 | \n", "1 | \n", "1 | \n", "-2.048957 | \n", "2.500295 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0.188291 | \n", "-0.354548 | \n", "0 | \n", "
3 | \n", "163 | \n", "1 | \n", "1 | \n", "-1.647712 | \n", "3.035064 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0.224408 | \n", "-1.773956 | \n", "1 | \n", "
4 | \n", "164 | \n", "0 | \n", "0 | \n", "-1.753908 | \n", "2.028478 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "-0.307819 | \n", "0.595909 | \n", "2 | \n", "
5 | \n", "165 | \n", "1 | \n", "1 | \n", "-1.838391 | \n", "3.205352 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "-0.034964 | \n", "-1.680496 | \n", "2 | \n", "
6 | \n", "166 | \n", "0 | \n", "0 | \n", "-1.825758 | \n", "2.394916 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "-0.045699 | \n", "0.869568 | \n", "2 | \n", "
7 | \n", "167 | \n", "0 | \n", "0 | \n", "-3.162265 | \n", "3.055979 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "1 | \n", "0.174373 | \n", "-1.324212 | \n", "2 | \n", "
8 | \n", "168 | \n", "0 | \n", "0 | \n", "-2.035432 | \n", "2.368199 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0.227607 | \n", "0.600801 | \n", "0 | \n", "
9 | \n", "169 | \n", "0 | \n", "0 | \n", "-2.933966 | \n", "2.556052 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "1 | \n", "0.343777 | \n", "1.315978 | \n", "1 | \n", "
10 | \n", "170 | \n", "2 | \n", "2 | \n", "-1.441650 | \n", "2.437222 | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "1 | \n", "-0.352137 | \n", "-0.029504 | \n", "1 | \n", "
11 | \n", "171 | \n", "3 | \n", "3 | \n", "-1.681946 | \n", "2.603666 | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "1 | \n", "0.797169 | \n", "-0.100233 | \n", "0 | \n", "
12 | \n", "172 | \n", "3 | \n", "3 | \n", "-1.446450 | \n", "2.115750 | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "-0.856424 | \n", "-0.023039 | \n", "0 | \n", "
13 | \n", "173 | \n", "3 | \n", "3 | \n", "-3.140376 | \n", "2.507038 | \n", "1 | \n", "1 | \n", "0 | \n", "1 | \n", "1 | \n", "2.209182 | \n", "0.660209 | \n", "0 | \n", "
14 | \n", "174 | \n", "2 | \n", "2 | \n", "-2.743617 | \n", "2.046139 | \n", "1 | \n", "1 | \n", "0 | \n", "1 | \n", "0 | \n", "0.038795 | \n", "-0.846242 | \n", "1 | \n", "
15 | \n", "175 | \n", "3 | \n", "3 | \n", "-1.253390 | \n", "1.997722 | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "-1.620871 | \n", "-0.369944 | \n", "1 | \n", "
16 | \n", "176 | \n", "3 | \n", "3 | \n", "-2.042038 | \n", "1.745926 | \n", "1 | \n", "1 | \n", "0 | \n", "1 | \n", "0 | \n", "-1.510300 | \n", "0.903805 | \n", "2 | \n", "
17 | \n", "177 | \n", "3 | \n", "3 | \n", "-1.678088 | \n", "2.148858 | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0.876064 | \n", "-0.305209 | \n", "0 | \n", "
18 | \n", "178 | \n", "2 | \n", "2 | \n", "-1.539851 | \n", "2.806150 | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "1 | \n", "-0.193820 | \n", "-1.547240 | \n", "0 | \n", "
19 | \n", "179 | \n", "2 | \n", "2 | \n", "-1.484411 | \n", "2.540243 | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "1 | \n", "0.029680 | \n", "-0.694832 | \n", "1 | \n", "
20 | \n", "180 | \n", "5 | \n", "5 | \n", "-1.145073 | \n", "1.938436 | \n", "2 | \n", "2 | \n", "0 | \n", "0 | \n", "1 | \n", "0.448419 | \n", "1.062856 | \n", "2 | \n", "
21 | \n", "181 | \n", "5 | \n", "5 | \n", "-1.976578 | \n", "2.167116 | \n", "2 | \n", "2 | \n", "0 | \n", "0 | \n", "0 | \n", "0.051553 | \n", "0.623657 | \n", "0 | \n", "
22 | \n", "182 | \n", "5 | \n", "5 | \n", "-2.248826 | \n", "2.782804 | \n", "2 | \n", "2 | \n", "0 | \n", "1 | \n", "1 | \n", "-0.069256 | \n", "-1.654039 | \n", "2 | \n", "
23 | \n", "183 | \n", "4 | \n", "4 | \n", "-3.381418 | \n", "2.342920 | \n", "2 | \n", "2 | \n", "0 | \n", "1 | \n", "0 | \n", "0.835689 | \n", "-0.528370 | \n", "0 | \n", "
24 | \n", "184 | \n", "5 | \n", "5 | \n", "-2.414065 | \n", "1.897629 | \n", "2 | \n", "2 | \n", "0 | \n", "1 | \n", "0 | \n", "-0.123666 | \n", "0.956612 | \n", "1 | \n", "
25 | \n", "185 | \n", "4 | \n", "4 | \n", "-3.131777 | \n", "2.884738 | \n", "2 | \n", "2 | \n", "0 | \n", "1 | \n", "1 | \n", "-0.767185 | \n", "-0.904343 | \n", "0 | \n", "
26 | \n", "186 | \n", "4 | \n", "4 | \n", "-3.342341 | \n", "2.693796 | \n", "2 | \n", "2 | \n", "0 | \n", "1 | \n", "1 | \n", "0.726720 | \n", "0.368079 | \n", "0 | \n", "
27 | \n", "187 | \n", "5 | \n", "5 | \n", "-2.140324 | \n", "2.530651 | \n", "2 | \n", "2 | \n", "0 | \n", "0 | \n", "0 | \n", "1.183305 | \n", "-1.663274 | \n", "0 | \n", "
28 | \n", "188 | \n", "4 | \n", "4 | \n", "-3.219936 | \n", "2.662715 | \n", "2 | \n", "2 | \n", "0 | \n", "1 | \n", "1 | \n", "-0.267946 | \n", "0.635036 | \n", "0 | \n", "
29 | \n", "189 | \n", "4 | \n", "4 | \n", "-2.813351 | \n", "2.204771 | \n", "2 | \n", "2 | \n", "0 | \n", "1 | \n", "0 | \n", "1.858780 | \n", "-1.423794 | \n", "2 | \n", "
30 | \n", "190 | \n", "6 | \n", "6 | \n", "-2.627046 | \n", "2.341005 | \n", "3 | \n", "3 | \n", "0 | \n", "1 | \n", "1 | \n", "-0.732658 | \n", "-0.174954 | \n", "0 | \n", "
31 | \n", "191 | \n", "7 | \n", "7 | \n", "-1.475745 | \n", "1.854227 | \n", "3 | \n", "3 | \n", "0 | \n", "0 | \n", "0 | \n", "0.085931 | \n", "-0.259650 | \n", "0 | \n", "
32 | \n", "192 | \n", "7 | \n", "7 | \n", "-1.372760 | \n", "1.618090 | \n", "3 | \n", "3 | \n", "0 | \n", "0 | \n", "0 | \n", "0.247395 | \n", "1.038758 | \n", "2 | \n", "
33 | \n", "193 | \n", "6 | \n", "6 | \n", "-1.396256 | \n", "1.879039 | \n", "3 | \n", "3 | \n", "0 | \n", "0 | \n", "0 | \n", "-0.298457 | \n", "-0.415220 | \n", "0 | \n", "
34 | \n", "194 | \n", "6 | \n", "6 | \n", "-1.349778 | \n", "2.194202 | \n", "3 | \n", "3 | \n", "0 | \n", "0 | \n", "1 | \n", "-0.641476 | \n", "0.840362 | \n", "0 | \n", "
35 | \n", "195 | \n", "7 | \n", "7 | \n", "-1.435867 | \n", "1.505834 | \n", "3 | \n", "3 | \n", "0 | \n", "0 | \n", "0 | \n", "0.455100 | \n", "1.541480 | \n", "2 | \n", "
36 | \n", "196 | \n", "6 | \n", "6 | \n", "-2.786497 | \n", "1.745557 | \n", "3 | \n", "3 | \n", "0 | \n", "1 | \n", "0 | \n", "0.631748 | \n", "0.769990 | \n", "0 | \n", "
37 | \n", "197 | \n", "7 | \n", "7 | \n", "-1.450763 | \n", "1.851792 | \n", "3 | \n", "3 | \n", "0 | \n", "0 | \n", "0 | \n", "-0.047915 | \n", "-0.048053 | \n", "0 | \n", "
38 | \n", "198 | \n", "6 | \n", "6 | \n", "-2.567547 | \n", "1.749243 | \n", "3 | \n", "3 | \n", "0 | \n", "1 | \n", "0 | \n", "-0.018666 | \n", "0.676466 | \n", "2 | \n", "
39 | \n", "199 | \n", "7 | \n", "7 | \n", "-2.342840 | \n", "2.728105 | \n", "3 | \n", "3 | \n", "0 | \n", "1 | \n", "1 | \n", "-1.548878 | \n", "1.056820 | \n", "1 | \n", "