@@ -9,55 +9,17 @@ jupyter: python3
99
1010import numpy as np
1111import pandas as pd
12- from itables import init_notebook_mode, show, options
12+ from itables import init_notebook_mode
13+ import os
14+ import sys
1315
14- init_notebook_mode(all_interactive=True)
16+ doc_dir = os.path.abspath(os.path.join(os.getcwd(), ".."))
17+ if doc_dir not in sys.path:
18+ sys.path.append(doc_dir)
19+
20+ from utils.style_tables import generate_and_show_styled_table
1521
16- def highlight_range(s, level=0.95, dist=0.05, props=''):
17- color_grid = np.where((s >= level-dist) &
18- (s <= level+dist), props, '')
19- return color_grid
20-
21-
22- def color_coverage(df, level):
23- # color coverage column order is important
24- styled_df = df.apply(
25- highlight_range,
26- level=level,
27- dist=1.0,
28- props='color:black;background-color:red',
29- subset=["Coverage"])
30- styled_df = styled_df.apply(
31- highlight_range,
32- level=level,
33- dist=0.1,
34- props='color:black;background-color:yellow',
35- subset=["Coverage"])
36- styled_df = styled_df.apply(
37- highlight_range,
38- level=level,
39- dist=0.05,
40- props='color:white;background-color:darkgreen',
41- subset=["Coverage"])
42-
43- # set all coverage values to bold
44- styled_df = styled_df.set_properties(
45- **{'font-weight': 'bold'},
46- subset=["Coverage"])
47- return styled_df
48-
49-
50- def make_pretty(df, level, n_rep):
51- styled_df = df.style.hide(axis="index")
52- # Format only float columns
53- float_cols = df.select_dtypes(include=['float']).columns
54- styled_df = styled_df.format({col: "{:.3f}" for col in float_cols})
55-
56- # color coverage column order is important
57- styled_df = color_coverage(styled_df, level)
58- caption = f"Coverage for {level*100}%-Confidence Interval over {n_rep} Repetitions"
59-
60- return show(styled_df, caption=caption, allow_html=True)
22+ init_notebook_mode(all_interactive=True)
6123```
6224
6325## ATTE Coverage
@@ -91,20 +53,27 @@ display_columns = ["Learner g", "Learner m", "DGP", "In-sample-norm.", "Bias", "
9153
9254``` {python}
9355#| echo: false
94- score = "observational"
95- level = 0.95
9656
97- df_ate_95 = df[(df['level'] == level) & (df["Score"] == score)][display_columns]
98- make_pretty(df_ate_95, level, n_rep)
57+ generate_and_show_styled_table(
58+ main_df=df,
59+ filters={"level": 0.95, "Score": "observational"},
60+ display_cols=display_columns,
61+ n_rep=n_rep,
62+ level_col="level",
63+ coverage_highlight_cols=["Coverage"]
64+ )
9965```
10066
10167``` {python}
10268#| echo: false
103- score = "observational"
104- level = 0.9
105-
106- df_ate_9 = df[(df['level'] == level) & (df["Score"] == score)][display_columns]
107- make_pretty(df_ate_9, level, n_rep)
69+ generate_and_show_styled_table(
70+ main_df=df,
71+ filters={"level": 0.9, "Score": "observational"},
72+ display_cols=display_columns,
73+ n_rep=n_rep,
74+ level_col="level",
75+ coverage_highlight_cols=["Coverage"]
76+ )
10877```
10978
11079### Experimental Score
@@ -113,18 +82,24 @@ Remark that the only two valid DGPs are DGP $5$ and DGP $6$. All other DGPs are
11382
11483``` {python}
11584#| echo: false
116- score = "experimental"
117- level = 0.95
118-
119- df_ate_95 = df[(df['level'] == level) & (df["Score"] == score)][display_columns]
120- make_pretty(df_ate_95, level, n_rep)
85+ generate_and_show_styled_table(
86+ main_df=df,
87+ filters={"level": 0.95, "Score": "experimental"},
88+ display_cols=display_columns,
89+ n_rep=n_rep,
90+ level_col="level",
91+ coverage_highlight_cols=["Coverage"]
92+ )
12193```
12294
12395``` {python}
12496#| echo: false
125- score = "experimental"
126- level = 0.9
127-
128- df_ate_9 = df[(df['level'] == level) & (df["Score"] == score)][display_columns]
129- make_pretty(df_ate_9, level, n_rep)
97+ generate_and_show_styled_table(
98+ main_df=df,
99+ filters={"level": 0.9, "Score": "experimental"},
100+ display_cols=display_columns,
101+ n_rep=n_rep,
102+ level_col="level",
103+ coverage_highlight_cols=["Coverage"]
104+ )
130105```
0 commit comments