@@ -9,55 +9,17 @@ jupyter: python3
9
9
10
10
import numpy as np
11
11
import 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
13
15
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
15
21
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)
61
23
```
62
24
63
25
## APO Pointwise Coverage
@@ -78,31 +40,41 @@ print(metadata_df.T.to_string(header=False))
78
40
``` {python}
79
41
#| echo: false
80
42
81
- # set up data and rename columns
82
- df = pd.read_csv("../../results/irm/irm_apo_coverage_apo.csv", index_col=None)
43
+ # set up data
44
+ df_apo = pd.read_csv("../../results/irm/irm_apo_coverage_apo.csv", index_col=None)
83
45
84
- assert df ["repetition"].nunique() == 1
85
- n_rep = df ["repetition"].unique()[0]
46
+ assert df_apo ["repetition"].nunique() == 1
47
+ n_rep_apo = df_apo ["repetition"].unique()[0]
86
48
87
- display_columns = ["Learner g", "Learner m", "Treatment Level", "Bias", "CI Length", "Coverage"]
49
+ display_columns_apo = ["Learner g", "Learner m", "Treatment Level", "Bias", "CI Length", "Coverage"]
88
50
```
89
51
90
52
91
53
``` {python}
92
54
#| echo: false
93
55
94
- level = 0.95
95
- df_ate_95 = df[df['level'] == level][display_columns]
96
- make_pretty(df_ate_95, level, n_rep)
56
+ generate_and_show_styled_table(
57
+ main_df=df_apo,
58
+ filters={"level": 0.95},
59
+ display_cols=display_columns_apo,
60
+ n_rep=n_rep_apo,
61
+ level_col="level",
62
+ coverage_highlight_cols=["Coverage"]
63
+ )
97
64
```
98
65
99
66
100
67
``` {python}
101
68
#| echo: false
102
69
103
- level = 0.9
104
- df_ate_9 = df[df['level'] == level][display_columns]
105
- make_pretty(df_ate_9, level, n_rep)
70
+ generate_and_show_styled_table(
71
+ main_df=df_apo,
72
+ filters={"level": 0.9},
73
+ display_cols=display_columns_apo,
74
+ n_rep=n_rep_apo,
75
+ level_col="level",
76
+ coverage_highlight_cols=["Coverage"]
77
+ )
106
78
```
107
79
108
80
@@ -126,80 +98,40 @@ print(metadata_df.T.to_string(header=False))
126
98
``` {python}
127
99
#| echo: false
128
100
129
- def highlight_range(s, level=0.95, dist=0.05, props=''):
130
- color_grid = np.where((s >= level-dist) &
131
- (s <= level+dist), props, '')
132
- return color_grid
133
-
134
-
135
- def color_coverage(df, level):
136
- # color coverage column order is important
137
- styled_df = df.apply(
138
- highlight_range,
139
- level=level,
140
- dist=1.0,
141
- props='color:black;background-color:red',
142
- subset=["Coverage", "Uniform Coverage"])
143
- styled_df = styled_df.apply(
144
- highlight_range,
145
- level=level,
146
- dist=0.1,
147
- props='color:black;background-color:yellow',
148
- subset=["Coverage", "Uniform Coverage"])
149
- styled_df = styled_df.apply(
150
- highlight_range,
151
- level=level,
152
- dist=0.05,
153
- props='color:white;background-color:darkgreen',
154
- subset=["Coverage", "Uniform Coverage"])
155
-
156
- # set all coverage values to bold
157
- styled_df = styled_df.set_properties(
158
- **{'font-weight': 'bold'},
159
- subset=["Coverage", "Uniform Coverage"])
160
- return styled_df
161
-
162
-
163
- def make_pretty(df, level, n_rep):
164
- styled_df = df.style.hide(axis="index")
165
- # Format only float columns
166
- float_cols = df.select_dtypes(include=['float']).columns
167
- styled_df = styled_df.format({col: "{:.3f}" for col in float_cols})
168
-
169
- # color coverage column order is important
170
- styled_df = color_coverage(styled_df, level)
171
- caption = f"Coverage for {level*100}%-Confidence Interval over {n_rep} Repetitions"
172
-
173
- return show(styled_df, caption=caption, allow_html=True)
174
- ```
175
-
176
- ``` {python}
177
- #| echo: false
178
-
179
- # set up data and rename columns
180
- df = pd.read_csv("../../results/irm/irm_apo_coverage_apos.csv", index_col=None)
101
+ # set up data
102
+ df_apos = pd.read_csv("../../results/irm/irm_apo_coverage_apos.csv", index_col=None)
181
103
182
- assert df ["repetition"].nunique() == 1
183
- n_rep = df ["repetition"].unique()[0]
104
+ assert df_apos ["repetition"].nunique() == 1
105
+ n_rep_apos = df_apos ["repetition"].unique()[0]
184
106
185
- display_columns = ["Learner g", "Learner m", "Bias", "CI Length", "Coverage", "Uniform CI Length", "Uniform Coverage"]
107
+ display_columns_apos = ["Learner g", "Learner m", "Bias", "CI Length", "Coverage", "Uniform CI Length", "Uniform Coverage"]
186
108
```
187
109
188
110
``` {python}
189
111
#| echo: false
190
112
191
- level = 0.95
192
- df_ate_95 = df[df['level'] == level][display_columns]
193
- make_pretty(df_ate_95, level, n_rep)
113
+ generate_and_show_styled_table(
114
+ main_df=df_apos,
115
+ filters={"level": 0.95},
116
+ display_cols=display_columns_apos,
117
+ n_rep=n_rep_apos,
118
+ level_col="level",
119
+ coverage_highlight_cols=["Coverage", "Uniform Coverage"]
120
+ )
194
121
```
195
122
196
123
197
124
``` {python}
198
125
#| echo: false
199
126
200
- level = 0.9
201
- df_ate_9 = df[df['level'] == level][display_columns]
202
- make_pretty(df_ate_9, level, n_rep)
127
+ generate_and_show_styled_table(
128
+ main_df=df_apos,
129
+ filters={"level": 0.9},
130
+ display_cols=display_columns_apos,
131
+ n_rep=n_rep_apos,
132
+ level_col="level",
133
+ coverage_highlight_cols=["Coverage", "Uniform Coverage"]
134
+ )
203
135
```
204
136
205
137
## Causal Contrast Coverage
@@ -222,28 +154,38 @@ print(metadata_df.T.to_string(header=False))
222
154
``` {python}
223
155
#| echo: false
224
156
225
- # set up data and rename columns
226
- df = pd.read_csv("../../results/irm/irm_apo_coverage_apos_contrast.csv", index_col=None)
157
+ # set up data
158
+ df_contrast = pd.read_csv("../../results/irm/irm_apo_coverage_apos_contrast.csv", index_col=None)
227
159
228
- assert df ["repetition"].nunique() == 1
229
- n_rep = df ["repetition"].unique()[0]
160
+ assert df_contrast ["repetition"].nunique() == 1
161
+ n_rep_contrast = df_contrast ["repetition"].unique()[0]
230
162
231
- display_columns = ["Learner g", "Learner m", "Bias", "CI Length", "Coverage", "Uniform CI Length", "Uniform Coverage"]
163
+ display_columns_contrast = ["Learner g", "Learner m", "Bias", "CI Length", "Coverage", "Uniform CI Length", "Uniform Coverage"]
232
164
```
233
165
234
166
``` {python}
235
167
#| echo: false
236
168
237
- level = 0.95
238
- df_ate_95 = df[df['level'] == level][display_columns]
239
- make_pretty(df_ate_95, level, n_rep)
169
+ generate_and_show_styled_table(
170
+ main_df=df_contrast,
171
+ filters={"level": 0.95},
172
+ display_cols=display_columns_contrast,
173
+ n_rep=n_rep_contrast,
174
+ level_col="level",
175
+ coverage_highlight_cols=["Coverage", "Uniform Coverage"]
176
+ )
240
177
```
241
178
242
179
243
180
``` {python}
244
181
#| echo: false
245
182
246
- level = 0.9
247
- df_ate_9 = df[df['level'] == level][display_columns]
248
- make_pretty(df_ate_9, level, n_rep)
183
+ generate_and_show_styled_table(
184
+ main_df=df_contrast,
185
+ filters={"level": 0.9},
186
+ display_cols=display_columns_contrast,
187
+ n_rep=n_rep_contrast,
188
+ level_col="level",
189
+ coverage_highlight_cols=["Coverage", "Uniform Coverage"]
190
+ )
249
191
```
0 commit comments