|
15 | 15 | Interrupted Time Series Analysis |
16 | 16 | """ |
17 | 17 |
|
18 | | -import warnings |
19 | 18 | from typing import Any, Literal |
20 | 19 |
|
21 | 20 | import arviz as az |
@@ -129,6 +128,12 @@ class InterruptedTimeSeries(BaseExperiment): |
129 | 128 | supports_ols = True |
130 | 129 | supports_bayes = True |
131 | 130 | _default_model_class = LinearRegression |
| 131 | + _deprecated_design_aliases = { |
| 132 | + "pre_X": ("pre_design", "X"), |
| 133 | + "pre_y": ("pre_design", "y"), |
| 134 | + "post_X": ("post_design", "X"), |
| 135 | + "post_y": ("post_design", "y"), |
| 136 | + } |
132 | 137 |
|
133 | 138 | def __init__( |
134 | 139 | self, |
@@ -169,39 +174,17 @@ def _build_design_matrices(self) -> None: |
169 | 174 |
|
170 | 175 | def _prepare_data(self) -> None: |
171 | 176 | """Bundle design matrices into ``xr.Dataset`` objects for pre and post periods.""" |
172 | | - self.pre_design = xr.Dataset( |
173 | | - { |
174 | | - "X": xr.DataArray( |
175 | | - self._pre_X_raw, |
176 | | - dims=["obs_ind", "coeffs"], |
177 | | - coords={"obs_ind": self.datapre.index, "coeffs": self.labels}, |
178 | | - ), |
179 | | - "y": xr.DataArray( |
180 | | - self._pre_y_raw, |
181 | | - dims=["obs_ind", "treated_units"], |
182 | | - coords={ |
183 | | - "obs_ind": self.datapre.index, |
184 | | - "treated_units": ["unit_0"], |
185 | | - }, |
186 | | - ), |
187 | | - } |
| 177 | + self.pre_design = self._build_design_dataset( |
| 178 | + self._pre_X_raw, |
| 179 | + self._pre_y_raw, |
| 180 | + obs_ind=self.datapre.index, |
| 181 | + coeffs=self.labels, |
188 | 182 | ) |
189 | | - self.post_design = xr.Dataset( |
190 | | - { |
191 | | - "X": xr.DataArray( |
192 | | - self._post_X_raw, |
193 | | - dims=["obs_ind", "coeffs"], |
194 | | - coords={"obs_ind": self.datapost.index, "coeffs": self.labels}, |
195 | | - ), |
196 | | - "y": xr.DataArray( |
197 | | - self._post_y_raw, |
198 | | - dims=["obs_ind", "treated_units"], |
199 | | - coords={ |
200 | | - "obs_ind": self.datapost.index, |
201 | | - "treated_units": ["unit_0"], |
202 | | - }, |
203 | | - ), |
204 | | - } |
| 183 | + self.post_design = self._build_design_dataset( |
| 184 | + self._post_X_raw, |
| 185 | + self._post_y_raw, |
| 186 | + obs_ind=self.datapost.index, |
| 187 | + coeffs=self.labels, |
205 | 188 | ) |
206 | 189 | del self._pre_X_raw, self._pre_y_raw, self._post_X_raw, self._post_y_raw |
207 | 190 |
|
@@ -320,46 +303,6 @@ def datapost(self) -> pd.DataFrame: |
320 | 303 | """ |
321 | 304 | return self.data[self.data.index >= self.treatment_time] |
322 | 305 |
|
323 | | - @property |
324 | | - def pre_X(self) -> xr.DataArray: |
325 | | - """.. deprecated:: Use ``self.pre_design['X']`` instead.""" |
326 | | - warnings.warn( |
327 | | - "pre_X is deprecated, use pre_design['X']", |
328 | | - DeprecationWarning, |
329 | | - stacklevel=2, |
330 | | - ) |
331 | | - return self.pre_design["X"] |
332 | | - |
333 | | - @property |
334 | | - def pre_y(self) -> xr.DataArray: |
335 | | - """.. deprecated:: Use ``self.pre_design['y']`` instead.""" |
336 | | - warnings.warn( |
337 | | - "pre_y is deprecated, use pre_design['y']", |
338 | | - DeprecationWarning, |
339 | | - stacklevel=2, |
340 | | - ) |
341 | | - return self.pre_design["y"] |
342 | | - |
343 | | - @property |
344 | | - def post_X(self) -> xr.DataArray: |
345 | | - """.. deprecated:: Use ``self.post_design['X']`` instead.""" |
346 | | - warnings.warn( |
347 | | - "post_X is deprecated, use post_design['X']", |
348 | | - DeprecationWarning, |
349 | | - stacklevel=2, |
350 | | - ) |
351 | | - return self.post_design["X"] |
352 | | - |
353 | | - @property |
354 | | - def post_y(self) -> xr.DataArray: |
355 | | - """.. deprecated:: Use ``self.post_design['y']`` instead.""" |
356 | | - warnings.warn( |
357 | | - "post_y is deprecated, use post_design['y']", |
358 | | - DeprecationWarning, |
359 | | - stacklevel=2, |
360 | | - ) |
361 | | - return self.post_design["y"] |
362 | | - |
363 | 306 | def _split_post_period(self) -> None: |
364 | 307 | """Split post period into intervention and post-intervention periods. |
365 | 308 |
|
|
0 commit comments