panelbox 0.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. panelbox/__init__.py +67 -0
  2. panelbox/__version__.py +14 -0
  3. panelbox/cli/__init__.py +0 -0
  4. panelbox/cli/{commands}/__init__.py +0 -0
  5. panelbox/core/__init__.py +0 -0
  6. panelbox/core/base_model.py +164 -0
  7. panelbox/core/formula_parser.py +318 -0
  8. panelbox/core/panel_data.py +387 -0
  9. panelbox/core/results.py +366 -0
  10. panelbox/datasets/__init__.py +0 -0
  11. panelbox/datasets/{data}/__init__.py +0 -0
  12. panelbox/gmm/__init__.py +65 -0
  13. panelbox/gmm/difference_gmm.py +645 -0
  14. panelbox/gmm/estimator.py +562 -0
  15. panelbox/gmm/instruments.py +580 -0
  16. panelbox/gmm/results.py +550 -0
  17. panelbox/gmm/system_gmm.py +621 -0
  18. panelbox/gmm/tests.py +535 -0
  19. panelbox/models/__init__.py +11 -0
  20. panelbox/models/dynamic/__init__.py +0 -0
  21. panelbox/models/iv/__init__.py +0 -0
  22. panelbox/models/static/__init__.py +13 -0
  23. panelbox/models/static/fixed_effects.py +516 -0
  24. panelbox/models/static/pooled_ols.py +298 -0
  25. panelbox/models/static/random_effects.py +512 -0
  26. panelbox/report/__init__.py +61 -0
  27. panelbox/report/asset_manager.py +410 -0
  28. panelbox/report/css_manager.py +472 -0
  29. panelbox/report/exporters/__init__.py +15 -0
  30. panelbox/report/exporters/html_exporter.py +440 -0
  31. panelbox/report/exporters/latex_exporter.py +510 -0
  32. panelbox/report/exporters/markdown_exporter.py +446 -0
  33. panelbox/report/renderers/__init__.py +11 -0
  34. panelbox/report/renderers/static/__init__.py +0 -0
  35. panelbox/report/renderers/static_validation_renderer.py +341 -0
  36. panelbox/report/report_manager.py +502 -0
  37. panelbox/report/template_manager.py +337 -0
  38. panelbox/report/transformers/__init__.py +0 -0
  39. panelbox/report/transformers/static/__init__.py +0 -0
  40. panelbox/report/validation_transformer.py +449 -0
  41. panelbox/standard_errors/__init__.py +0 -0
  42. panelbox/templates/__init__.py +0 -0
  43. panelbox/templates/assets/css/base_styles.css +382 -0
  44. panelbox/templates/assets/css/report_components.css +747 -0
  45. panelbox/templates/assets/js/tab-navigation.js +161 -0
  46. panelbox/templates/assets/js/utils.js +276 -0
  47. panelbox/templates/common/footer.html +24 -0
  48. panelbox/templates/common/header.html +44 -0
  49. panelbox/templates/common/meta.html +5 -0
  50. panelbox/templates/validation/interactive/index.html +272 -0
  51. panelbox/templates/validation/interactive/partials/charts.html +58 -0
  52. panelbox/templates/validation/interactive/partials/methodology.html +201 -0
  53. panelbox/templates/validation/interactive/partials/overview.html +146 -0
  54. panelbox/templates/validation/interactive/partials/recommendations.html +101 -0
  55. panelbox/templates/validation/interactive/partials/test_results.html +231 -0
  56. panelbox/utils/__init__.py +0 -0
  57. panelbox/utils/formatting.py +172 -0
  58. panelbox/utils/matrix_ops.py +233 -0
  59. panelbox/utils/statistical.py +173 -0
  60. panelbox/validation/__init__.py +58 -0
  61. panelbox/validation/base.py +175 -0
  62. panelbox/validation/cointegration/__init__.py +0 -0
  63. panelbox/validation/cross_sectional_dependence/__init__.py +13 -0
  64. panelbox/validation/cross_sectional_dependence/breusch_pagan_lm.py +222 -0
  65. panelbox/validation/cross_sectional_dependence/frees.py +297 -0
  66. panelbox/validation/cross_sectional_dependence/pesaran_cd.py +188 -0
  67. panelbox/validation/heteroskedasticity/__init__.py +13 -0
  68. panelbox/validation/heteroskedasticity/breusch_pagan.py +222 -0
  69. panelbox/validation/heteroskedasticity/modified_wald.py +172 -0
  70. panelbox/validation/heteroskedasticity/white.py +208 -0
  71. panelbox/validation/instruments/__init__.py +0 -0
  72. panelbox/validation/robustness/__init__.py +0 -0
  73. panelbox/validation/serial_correlation/__init__.py +13 -0
  74. panelbox/validation/serial_correlation/baltagi_wu.py +220 -0
  75. panelbox/validation/serial_correlation/breusch_godfrey.py +260 -0
  76. panelbox/validation/serial_correlation/wooldridge_ar.py +200 -0
  77. panelbox/validation/specification/__init__.py +16 -0
  78. panelbox/validation/specification/chow.py +273 -0
  79. panelbox/validation/specification/hausman.py +264 -0
  80. panelbox/validation/specification/mundlak.py +331 -0
  81. panelbox/validation/specification/reset.py +273 -0
  82. panelbox/validation/unit_root/__init__.py +0 -0
  83. panelbox/validation/validation_report.py +257 -0
  84. panelbox/validation/validation_suite.py +401 -0
  85. panelbox-0.2.0.dist-info/METADATA +337 -0
  86. panelbox-0.2.0.dist-info/RECORD +90 -0
  87. panelbox-0.2.0.dist-info/WHEEL +5 -0
  88. panelbox-0.2.0.dist-info/entry_points.txt +2 -0
  89. panelbox-0.2.0.dist-info/licenses/LICENSE +21 -0
  90. panelbox-0.2.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,337 @@
1
+ Metadata-Version: 2.4
2
+ Name: panelbox
3
+ Version: 0.2.0
4
+ Summary: Panel data econometrics in Python: Fixed Effects, Random Effects, GMM (Arellano-Bond, Blundell-Bond)
5
+ Author-email: Gustavo Haase <gustavo.haase@gmail.com>, Paulo Dourado <paulodourado.unb@gmail.com>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/PanelBox-Econometrics-Model/panelbox
8
+ Project-URL: Documentation, https://github.com/PanelBox-Econometrics-Model/panelbox/tree/main/docs
9
+ Project-URL: Repository, https://github.com/PanelBox-Econometrics-Model/panelbox
10
+ Project-URL: Issues, https://github.com/PanelBox-Econometrics-Model/panelbox/issues
11
+ Project-URL: Changelog, https://github.com/PanelBox-Econometrics-Model/panelbox/blob/main/CHANGELOG.md
12
+ Keywords: econometrics,panel data,GMM,Arellano-Bond,Blundell-Bond,fixed effects,random effects,dynamic panel,instrumental variables
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: Intended Audience :: Financial and Insurance Industry
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Topic :: Scientific/Engineering
24
+ Classifier: Topic :: Scientific/Engineering :: Mathematics
25
+ Classifier: Topic :: Office/Business :: Financial
26
+ Requires-Python: >=3.9
27
+ Description-Content-Type: text/markdown
28
+ License-File: LICENSE
29
+ Requires-Dist: numpy>=1.24.0
30
+ Requires-Dist: pandas>=2.0.0
31
+ Requires-Dist: scipy>=1.10.0
32
+ Requires-Dist: statsmodels>=0.14.0
33
+ Requires-Dist: patsy>=0.5.3
34
+ Provides-Extra: dev
35
+ Requires-Dist: pytest>=7.3.0; extra == "dev"
36
+ Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
37
+ Requires-Dist: black>=23.3.0; extra == "dev"
38
+ Requires-Dist: flake8>=6.0.0; extra == "dev"
39
+ Requires-Dist: mypy>=1.3.0; extra == "dev"
40
+ Requires-Dist: isort>=5.12.0; extra == "dev"
41
+ Provides-Extra: docs
42
+ Requires-Dist: mkdocs>=1.4.0; extra == "docs"
43
+ Requires-Dist: mkdocs-material>=9.1.0; extra == "docs"
44
+ Requires-Dist: mkdocstrings>=0.22.0; extra == "docs"
45
+ Requires-Dist: mkdocstrings-python>=1.1.0; extra == "docs"
46
+ Provides-Extra: test
47
+ Requires-Dist: pytest>=7.3.0; extra == "test"
48
+ Requires-Dist: pytest-cov>=4.1.0; extra == "test"
49
+ Requires-Dist: hypothesis>=6.75.0; extra == "test"
50
+ Dynamic: license-file
51
+
52
+ # PanelBox
53
+
54
+ **Panel Data Econometrics in Python**
55
+
56
+ [![Python Version](https://img.shields.io/badge/python-3.9%2B-blue.svg)](https://www.python.org/downloads/)
57
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
58
+ [![Development Status](https://img.shields.io/badge/status-beta-green.svg)]()
59
+
60
+ PanelBox provides comprehensive tools for panel data econometrics, bringing Stata's `xtabond2` and R's `plm` capabilities to Python with modern, user-friendly APIs.
61
+
62
+ ## Features
63
+
64
+ ### ✅ Static Panel Models
65
+ - **Pooled OLS**: Standard OLS with panel data
66
+ - **Fixed Effects**: Control for time-invariant heterogeneity
67
+ - **Random Effects**: GLS estimation with random effects
68
+ - **Hausman Test**: Test for endogeneity of random effects
69
+
70
+ ### ✅ Dynamic Panel GMM (v0.2.0)
71
+ - **Difference GMM**: Arellano-Bond (1991) estimator
72
+ - **System GMM**: Blundell-Bond (1998) estimator
73
+ - **Robust to unbalanced panels**: Smart instrument selection
74
+ - **Windmeijer correction**: Finite-sample standard error correction
75
+ - **Comprehensive diagnostics**:
76
+ - Hansen J-test for overidentification
77
+ - Sargan test
78
+ - Arellano-Bond AR tests
79
+ - Instrument ratio monitoring
80
+
81
+ ### 🔧 Panel-Specific Features
82
+ - **Unbalanced panel support**: Handles missing observations gracefully
83
+ - **Time effects**: Time dummies, linear trends, or custom time controls
84
+ - **Clustered standard errors**: Robust inference
85
+ - **Instrument generation**: Automatic GMM-style and IV-style instruments
86
+ - **Collapse option**: Avoids instrument proliferation (Roodman 2009)
87
+
88
+ ### 📊 Publication-Ready Output
89
+ - **Summary tables**: Professional regression output
90
+ - **Diagnostic tests**: Comprehensive specification testing
91
+ - **LaTeX export**: Ready for academic papers
92
+ - **Warnings system**: Guides users to correct specifications
93
+
94
+ ## Installation
95
+
96
+ ```bash
97
+ pip install panelbox
98
+ ```
99
+
100
+ Or install from source:
101
+
102
+ ```bash
103
+ git clone https://github.com/PanelBox-Econometrics-Model/panelbox.git
104
+ cd panelbox
105
+ pip install -e .
106
+ ```
107
+
108
+ ## Quick Start
109
+
110
+ ### Static Panel Models
111
+
112
+ ```python
113
+ import panelbox as pb
114
+ import pandas as pd
115
+
116
+ # Load your panel data
117
+ data = pd.read_csv('panel_data.csv')
118
+
119
+ # Fixed Effects model
120
+ fe = pb.FixedEffects(
121
+ formula="invest ~ value + capital",
122
+ data=data,
123
+ id_var="firm",
124
+ time_var="year"
125
+ )
126
+ results = fe.fit(cov_type='clustered')
127
+ print(results.summary())
128
+
129
+ # Hausman test
130
+ hausman = pb.HausmanTest(fe_results, re_results)
131
+ print(hausman)
132
+ ```
133
+
134
+ ### Dynamic Panel GMM
135
+
136
+ ```python
137
+ from panelbox import DifferenceGMM
138
+
139
+ # Arellano-Bond employment equation
140
+ gmm = DifferenceGMM(
141
+ data=data,
142
+ dep_var='employment',
143
+ lags=1,
144
+ id_var='firm',
145
+ time_var='year',
146
+ exog_vars=['wages', 'capital', 'output'],
147
+ time_dummies=False,
148
+ collapse=True,
149
+ two_step=True,
150
+ robust=True
151
+ )
152
+
153
+ results = gmm.fit()
154
+ print(results.summary())
155
+
156
+ # Check specification tests
157
+ print(f"Hansen J p-value: {results.hansen_j.pvalue:.3f}")
158
+ print(f"AR(2) p-value: {results.ar2_test.pvalue:.3f}")
159
+ ```
160
+
161
+ ### System GMM (Blundell-Bond)
162
+
163
+ ```python
164
+ from panelbox import SystemGMM
165
+
166
+ # System GMM for persistent series
167
+ sys_gmm = SystemGMM(
168
+ data=data,
169
+ dep_var='y',
170
+ lags=1,
171
+ id_var='id',
172
+ time_var='year',
173
+ exog_vars=['x1', 'x2'],
174
+ collapse=True,
175
+ two_step=True,
176
+ robust=True
177
+ )
178
+
179
+ results = sys_gmm.fit()
180
+ print(results.summary())
181
+
182
+ # Compare efficiency with Difference GMM
183
+ print(f"Instrument count: {results.n_instruments}")
184
+ print(f"Instrument ratio: {results.instrument_ratio:.3f}")
185
+ ```
186
+
187
+ ## Key Advantages
188
+
189
+ ### 1. Handles Unbalanced Panels Gracefully
190
+
191
+ Unlike some implementations, PanelBox:
192
+ - ✅ Automatically detects unbalanced panel structure
193
+ - ✅ Warns about problematic specifications
194
+ - ✅ Intelligently selects instruments based on data availability
195
+ - ✅ Provides clear guidance when specifications fail
196
+
197
+ ```python
198
+ # Smart warnings for unbalanced panels
199
+ gmm = DifferenceGMM(data=unbalanced_data, ...)
200
+ # UserWarning: Unbalanced panel detected (20% balanced) with 8 time dummies.
201
+ # This may result in very few observations being retained.
202
+ #
203
+ # Recommendations:
204
+ # 1. Set time_dummies=False and add a linear trend
205
+ # 2. Use only subset of key time dummies
206
+ # 3. Ensure collapse=True
207
+ ```
208
+
209
+ ### 2. Comprehensive Specification Tests
210
+
211
+ All GMM models include:
212
+ - **Hansen J-test**: Overidentification test with interpretation
213
+ - **Sargan test**: Alternative overidentification test
214
+ - **AR(1) and AR(2) tests**: Serial correlation in first-differenced errors
215
+ - **Instrument ratio**: n_instruments / n_groups (should be < 1.0)
216
+
217
+ ### 3. Follows Best Practices
218
+
219
+ Based on Roodman (2009) "How to do xtabond2":
220
+ - Collapse option to avoid instrument proliferation
221
+ - Windmeijer (2005) standard error correction
222
+ - Automatic lag selection based on data availability
223
+ - Clear warnings for problematic specifications
224
+
225
+ ### 4. Rich Documentation
226
+
227
+ - 📚 Comprehensive [tutorial](https://github.com/PanelBox-Econometrics-Model/panelbox/tree/main/docs/gmm/tutorial.md)
228
+ - 📖 [Interpretation guide](https://github.com/PanelBox-Econometrics-Model/panelbox/tree/main/docs/gmm/interpretation_guide.md) with decision tables
229
+ - 💡 [Example scripts](https://github.com/PanelBox-Econometrics-Model/panelbox/tree/main/examples/gmm/) for common use cases
230
+ - 🔬 [Unbalanced panel guide](https://github.com/PanelBox-Econometrics-Model/panelbox/tree/main/examples/gmm/unbalanced_panel_guide.py)
231
+
232
+ ## Examples
233
+
234
+ See the [examples directory](https://github.com/PanelBox-Econometrics-Model/panelbox/tree/main/examples) for:
235
+
236
+ - **OLS vs FE vs GMM comparison**: Demonstrating bias in each estimator
237
+ - **Firm growth model**: Intermediate example with error handling
238
+ - **Production function estimation**: Advanced example with simultaneity bias
239
+ - **Unbalanced panel guide**: Practical solutions for unbalanced data
240
+
241
+ ## Comparison with Other Packages
242
+
243
+ | Feature | PanelBox | linearmodels | pyfixest | statsmodels |
244
+ |---------|----------|--------------|----------|-------------|
245
+ | Difference GMM | ✅ | ❌ | ❌ | ❌ |
246
+ | System GMM | ✅ | ❌ | ❌ | ❌ |
247
+ | Unbalanced panels | ✅ Smart | ⚠️ Basic | ⚠️ Basic | ⚠️ Basic |
248
+ | Collapse option | ✅ | ❌ | ❌ | ❌ |
249
+ | Windmeijer correction | ✅ | ❌ | ❌ | ❌ |
250
+ | User warnings | ✅ Proactive | ⚠️ Reactive | ⚠️ Reactive | ⚠️ Reactive |
251
+ | Documentation | ✅ Rich | ✅ Good | ✅ Good | ✅ Good |
252
+
253
+ ## Requirements
254
+
255
+ - Python >= 3.9
256
+ - NumPy >= 1.24.0
257
+ - Pandas >= 2.0.0
258
+ - SciPy >= 1.10.0
259
+ - statsmodels >= 0.14.0
260
+ - patsy >= 0.5.3
261
+
262
+ ## Validation
263
+
264
+ PanelBox has been validated against:
265
+ - ✅ Arellano-Bond (1991) employment equation
266
+ - ✅ Stata xtabond2 (with appropriate specifications)
267
+ - ✅ Multiple synthetic datasets with known DGP
268
+
269
+ See [validation directory](https://github.com/PanelBox-Econometrics-Model/panelbox/tree/main/validation) for details.
270
+
271
+ ## Citation
272
+
273
+ If you use PanelBox in your research, please cite:
274
+
275
+ ```bibtex
276
+ @software{panelbox2026,
277
+ author = {Haase, Gustavo and Dourado, Paulo},
278
+ title = {PanelBox: Panel Data Econometrics in Python},
279
+ year = {2026},
280
+ version = {0.2.0},
281
+ url = {https://github.com/PanelBox-Econometrics-Model/panelbox}
282
+ }
283
+ ```
284
+
285
+ ## References
286
+
287
+ ### Implemented Methods
288
+
289
+ - **Arellano, M., & Bond, S. (1991)**. "Some Tests of Specification for Panel Data: Monte Carlo Evidence and an Application to Employment Equations." *Review of Economic Studies*, 58(2), 277-297.
290
+
291
+ - **Blundell, R., & Bond, S. (1998)**. "Initial Conditions and Moment Restrictions in Dynamic Panel Data Models." *Journal of Econometrics*, 87(1), 115-143.
292
+
293
+ - **Windmeijer, F. (2005)**. "A Finite Sample Correction for the Variance of Linear Efficient Two-step GMM Estimators." *Journal of Econometrics*, 126(1), 25-51.
294
+
295
+ - **Roodman, D. (2009)**. "How to do xtabond2: An Introduction to Difference and System GMM in Stata." *Stata Journal*, 9(1), 86-136.
296
+
297
+ ### Textbooks
298
+
299
+ - **Baltagi, B. H. (2021)**. *Econometric Analysis of Panel Data* (6th ed.). Springer.
300
+ - **Wooldridge, J. M. (2010)**. *Econometric Analysis of Cross Section and Panel Data* (2nd ed.). MIT Press.
301
+
302
+ ## Contributing
303
+
304
+ Contributions are welcome! Please see [CONTRIBUTING.md](https://github.com/PanelBox-Econometrics-Model/panelbox/blob/main/CONTRIBUTING.md) for guidelines.
305
+
306
+ ## License
307
+
308
+ This project is licensed under the MIT License - see the [LICENSE](https://github.com/PanelBox-Econometrics-Model/panelbox/blob/main/LICENSE) file for details.
309
+
310
+ ## Support
311
+
312
+ - 📫 Issues: [GitHub Issues](https://github.com/PanelBox-Econometrics-Model/panelbox/issues)
313
+ - 📖 Documentation: [GitHub Wiki](https://github.com/PanelBox-Econometrics-Model/panelbox/tree/main/docs)
314
+ - 💬 Discussions: [GitHub Discussions](https://github.com/PanelBox-Econometrics-Model/panelbox/discussions)
315
+
316
+ ## Changelog
317
+
318
+ See [CHANGELOG.md](https://github.com/PanelBox-Econometrics-Model/panelbox/blob/main/CHANGELOG.md) for version history.
319
+
320
+ ### Latest Release: v0.2.0 (2026-01-21)
321
+
322
+ **Major Features:**
323
+ - ✨ Difference GMM (Arellano-Bond 1991)
324
+ - ✨ System GMM (Blundell-Bond 1998)
325
+ - ✨ Smart instrument selection for unbalanced panels
326
+ - ✨ Comprehensive warning system
327
+ - ✨ Rich documentation and examples
328
+
329
+ **Improvements:**
330
+ - 🔧 Robust to unbalanced panels (72% retention vs 0% before)
331
+ - 🔧 Windmeijer standard error correction
332
+ - 🔧 Automatic weak instrument filtering
333
+ - 📚 Tutorial, interpretation guide, and examples
334
+
335
+ ---
336
+
337
+ **Made with ❤️ for econometricians and researchers**
@@ -0,0 +1,90 @@
1
+ panelbox/__init__.py,sha256=DnxhJY1nMBHbkgLXfKVyvGYUUA6X9RPVQdFTAgfXCjs,1755
2
+ panelbox/__version__.py,sha256=HNihsYssjjA8jxV-47WM94WWeFyag4ayn54E_cQbSmY,536
3
+ panelbox/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ panelbox/cli/{commands}/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ panelbox/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ panelbox/core/base_model.py,sha256=PEtIs8kFF62EtMEpBjDqKF9eZc8sGdX3tnAcxGG9P_w,4373
7
+ panelbox/core/formula_parser.py,sha256=FijORo-LzPlMTdyllnn5h0jxyn-Q5EXYPIojVCimHNI,9726
8
+ panelbox/core/panel_data.py,sha256=JNglPJVbutqGpM_vY3brf845ausUGPKV--8Jn8n3tjs,12615
9
+ panelbox/core/results.py,sha256=oiEYly537kg0LZZGDGrbnnZPp3tHdUlwPwsnzEb-Szs,11635
10
+ panelbox/datasets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
+ panelbox/datasets/{data}/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
+ panelbox/gmm/__init__.py,sha256=ZJlPPmdWSJ0jWYQGMEhLT8F4NiNAWPEANoTlCDhnf3A,1922
13
+ panelbox/gmm/difference_gmm.py,sha256=J3tvFKDEKoVkrWSMNyjzNjAfib_VYzeJp5BJozRmxQE,22586
14
+ panelbox/gmm/estimator.py,sha256=GB9osG0eTDHhA0t25Al1BjxMV4qIxyxNzG6QKj-Obpk,18189
15
+ panelbox/gmm/instruments.py,sha256=2MJ1oeqSS8xiy6xylwNyiyEn2ogqumS0hUiUtjPnZuc,19517
16
+ panelbox/gmm/results.py,sha256=K6O7rBoAYuRQ1bRT8F-zsY8NdxAPa7rTsbfIegVvrN0,17078
17
+ panelbox/gmm/system_gmm.py,sha256=iIciuYvJ0O-Yg3tIXH2OOtRk4Jc8nhH30zNprjR4Kew,21422
18
+ panelbox/gmm/tests.py,sha256=aQz6t-NeuCRhLjnhxboG7MaKmdhyU8GLmAPWlz2TZrM,17487
19
+ panelbox/models/__init__.py,sha256=q0OtlD_E3_yvAm7kRvjySoBulU2VfeHl1xp--8f3e9k,196
20
+ panelbox/models/dynamic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
+ panelbox/models/iv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
+ panelbox/models/static/__init__.py,sha256=_noJ6KKS3hH4vgIWxJ8a4NDMV8dmbZb-zgAlf0BO-jY,285
23
+ panelbox/models/static/fixed_effects.py,sha256=qxoj1Xk34T3wuKccnZ6of6pCzqihytSeR5KiuuQdvtc,16010
24
+ panelbox/models/static/pooled_ols.py,sha256=h4Zih1YSyK53ZR10ZE2n0J15eT-Fy93IdX_tutYkgco,8271
25
+ panelbox/models/static/random_effects.py,sha256=fku3IGkyD-mITA6XvuHMz1aUdIQn-nWVQmumZitZEnQ,15953
26
+ panelbox/report/__init__.py,sha256=SgnfsuK8dXylf4mg8Oq5syquWNqwMURXdcAXXCXuqjg,1494
27
+ panelbox/report/asset_manager.py,sha256=aRpsN4M0iKLYvn_HQn88Vn952tyHX3m3Upq0-I4k3JU,10982
28
+ panelbox/report/css_manager.py,sha256=Z_5UsPsvA0vOZx5Iw32yUI7gecjPj5ljeBxIScnyWeY,12790
29
+ panelbox/report/report_manager.py,sha256=_8lYQq2aQZamFFk749zjT2IrznFj6hYdnjJEQS4NkJw,13776
30
+ panelbox/report/template_manager.py,sha256=Dr3NLkSprtqt2--1-rgQCX4EUEZ8xuZz-rMOBxYm4CQ,9671
31
+ panelbox/report/validation_transformer.py,sha256=5yWNzt5UQqierAsePEFOtcgnblEGPRgS9hrvr47QyuU,14179
32
+ panelbox/report/exporters/__init__.py,sha256=xV9qLeEbe9I7-uGiMzMoC4DfRqHk0EvT_o6l3s_Dfuc,305
33
+ panelbox/report/exporters/html_exporter.py,sha256=Kq-EQb4BOCw2xRnf9p9TBAyhg_CdIsnzDTl5f_E9pKE,11277
34
+ panelbox/report/exporters/latex_exporter.py,sha256=AC62K00H0WIyxm5hFKaSO_MaCLw4LuSt7tzkh2Rlf0E,15188
35
+ panelbox/report/exporters/markdown_exporter.py,sha256=8NgjnGlLIUSkxjRejJLS4Apb2wNzVHOJbfxmKsu0HGw,13601
36
+ panelbox/report/renderers/__init__.py,sha256=C9lcAm6s3bnpyE1CpVDRRCYV4zj9G3usZdZdP-M6U5s,210
37
+ panelbox/report/renderers/static_validation_renderer.py,sha256=0ejhF7lxxX-lJcqTadoHHxoCyxIQEzgPvXCcT_7OlDQ,9920
38
+ panelbox/report/renderers/static/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
+ panelbox/report/transformers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
+ panelbox/report/transformers/static/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
+ panelbox/standard_errors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
+ panelbox/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
+ panelbox/templates/assets/css/base_styles.css,sha256=1N7-35-lHUcdjX0KosO43tOrZ-3oCG6OY4cEx0_gqCQ,12014
44
+ panelbox/templates/assets/css/report_components.css,sha256=DoAHoFDbOxp_dUB3_k4g3geI-jqDwIL1wqaIENFm9vI,15064
45
+ panelbox/templates/assets/js/tab-navigation.js,sha256=5_1dOoReMz8dl83DDainHSGaWNKNL5MbA4HhNynRqU0,5250
46
+ panelbox/templates/assets/js/utils.js,sha256=UnY0fiUDdgXFoi1j5RZHz0o9kpTa1tjjWtdSb1OZxbU,8377
47
+ panelbox/templates/common/footer.html,sha256=Iuwkqdu5vvs0sV_ARD_JQatBmvedlvWQe1d2U3Z2LCg,878
48
+ panelbox/templates/common/header.html,sha256=CIdHU_u6f8JOn_G7dVqPitLxFG2DrTK8yGt94jpR6oE,1358
49
+ panelbox/templates/common/meta.html,sha256=OpGDomevQCXqelxBo8menYnTFZif0G9wBu5kNNQhafE,367
50
+ panelbox/templates/validation/interactive/index.html,sha256=Y2cnehlM0-zhoOydFUY0-ASHKKQpCmyECF4ZiNaGPu8,10324
51
+ panelbox/templates/validation/interactive/partials/charts.html,sha256=-ozbG84oBMeffYzM8Vu0CqHevy8k6tYUal8As98E0Ak,2558
52
+ panelbox/templates/validation/interactive/partials/methodology.html,sha256=egGCyRvPyAp91hZ0Ja5HH53jjpWgZiLam5za2ST7XT8,9509
53
+ panelbox/templates/validation/interactive/partials/overview.html,sha256=_VUA-xmJQQ7ZV2a_g8Lo3r3DMSdq1II2B9lLaQVMFVM,6298
54
+ panelbox/templates/validation/interactive/partials/recommendations.html,sha256=yhXVifggXmkGiQG_ntrRdR8J1-sSAu65JXjbp9a9aTc,4215
55
+ panelbox/templates/validation/interactive/partials/test_results.html,sha256=rg_YHrP25Vi1vWwc_dpCCPKKdpVRxukhz_g5wPTry34,9335
56
+ panelbox/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
+ panelbox/utils/formatting.py,sha256=kiw7NetocRsEVd5wA9cAf-SeQtAgeUWj_uguH-NmBrE,3531
58
+ panelbox/utils/matrix_ops.py,sha256=GtzpFG4lcM7Q0NMZjeeLqszpYEitYE5kDKACIJtj7HM,5397
59
+ panelbox/utils/statistical.py,sha256=pWmg6vW5jjU9IsftEwgLA1Rs_2srcW9Z9pEaAh7oJZU,3727
60
+ panelbox/validation/__init__.py,sha256=pE5kpR2_FcV1SoT0thzDkO5I76tRdXT9o_TR4Vlihx8,1930
61
+ panelbox/validation/base.py,sha256=EbS2Gl1NOXz_76Y1GG47uR6sLVThrbUoI70AEPt0YCo,4972
62
+ panelbox/validation/validation_report.py,sha256=p0NpdbjuW--1lHBwmD4wMTkVwpSABfFWDGB3SdbcKPc,8910
63
+ panelbox/validation/validation_suite.py,sha256=cLy6zB_MU2G1HJWazBtz6ghgwEqpJAhGrMrWM3K4wPE,13246
64
+ panelbox/validation/cointegration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
+ panelbox/validation/cross_sectional_dependence/__init__.py,sha256=fc8esCbbYnRp4lAwfr28TwxcH0xZKYNT1ulgwk8osbI,393
66
+ panelbox/validation/cross_sectional_dependence/breusch_pagan_lm.py,sha256=F4TBPYKRdLYyf493PPl4QV6rpadLV6Ij_yw73M9DQj0,7269
67
+ panelbox/validation/cross_sectional_dependence/frees.py,sha256=HHV8IR2RD9xU9Uv8KJpsnTslcXIq4OEeRuLmmsia0ek,9784
68
+ panelbox/validation/cross_sectional_dependence/pesaran_cd.py,sha256=ebnfu23xOH_yZkzMz-zhDOtAYeT8_PBVo4qRDPUVIQM,6148
69
+ panelbox/validation/heteroskedasticity/__init__.py,sha256=Q7lgtHv0djZIIoMUrSRmSl0mKZSBlt36mDGqMPX2VpI,363
70
+ panelbox/validation/heteroskedasticity/breusch_pagan.py,sha256=ND_rx1R4wwLrf1UeSLecWrPT4EgIWNqgiULatEAfEQ4,6936
71
+ panelbox/validation/heteroskedasticity/modified_wald.py,sha256=f7e7Cnc5um2gdWjLEtVESK-hdPtJuSn-typGVONB34Y,5606
72
+ panelbox/validation/heteroskedasticity/white.py,sha256=Er0L1dHF5528xMdwlgFZLQKxkG4faEjYIc8XmZdFCeM,6552
73
+ panelbox/validation/instruments/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
+ panelbox/validation/robustness/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
+ panelbox/validation/serial_correlation/__init__.py,sha256=oaVRtyoT4nNofqXIA0GiKX5kOx0qvCQy88dGDYwf48A,382
76
+ panelbox/validation/serial_correlation/baltagi_wu.py,sha256=v7A6f-d-mjcjs3Ujp8bq16Uc0jny7gAZFHJR6uUquq4,7106
77
+ panelbox/validation/serial_correlation/breusch_godfrey.py,sha256=_Itryc8pJT9q246gY4xvTmbB6rRlnr8z7vS8LRc4bwI,8851
78
+ panelbox/validation/serial_correlation/wooldridge_ar.py,sha256=HE9Aq1cORySyxVDMjAmEXnMnRkCwjODa3i7zwz17rcQ,6647
79
+ panelbox/validation/specification/__init__.py,sha256=dMm60eqzKBJwTfaWrDRFNsDP_v7F9XKTccnSVh-hVZI,431
80
+ panelbox/validation/specification/chow.py,sha256=dDjC7QzoPEY34P02M5z0xl-m9luFXhJMcrLtSlvA7jo,9095
81
+ panelbox/validation/specification/hausman.py,sha256=-sj5QPjaiHzL2MKwNAuArj4oRIugKpSD1tz3WTvSw-4,8241
82
+ panelbox/validation/specification/mundlak.py,sha256=mYbmbVTPjB3VdSyc5bAA286qq7rrZo4Utww4QI9gIjU,11305
83
+ panelbox/validation/specification/reset.py,sha256=lT5hyMrc7wYggoWiptERQoKSyqoekqO5ZSInRe5nRmw,8718
84
+ panelbox/validation/unit_root/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
+ panelbox-0.2.0.dist-info/licenses/LICENSE,sha256=8RMM6HTZa0iQnLVf_E_M7oRnrMJ6cFF5G0yaRJ4OALA,1085
86
+ panelbox-0.2.0.dist-info/METADATA,sha256=2lOV_z1PXF5C7a8E72uDBxgbE08KY9ljbuMerLnBKlE,11854
87
+ panelbox-0.2.0.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
88
+ panelbox-0.2.0.dist-info/entry_points.txt,sha256=rC5en7wxrwHeY_Adnb7hkjPdOKLSEz9alxFgzCZQIhY,52
89
+ panelbox-0.2.0.dist-info/top_level.txt,sha256=prj4h9i7Hb-Hsb9UKAg5-RhRH0Q3wfzo3v7K4Xso6jo,9
90
+ panelbox-0.2.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.10.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ panelbox = panelbox.cli.main:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Gustavo Haase, Paulo Dourado
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ panelbox