def test_random_effects_small_sample(data): y = PanelData(data.y) mod = RandomEffects(data.y, data.x) no_ss = mod.fit() ss = mod.fit(small_sample=True) if y.dataframe.shape[0] == mod.dependent.dataframe.shape[0]: assert ss.variance_decomposition.Effects == no_ss.variance_decomposition.Effects else: assert ss.variance_decomposition.Effects != no_ss.variance_decomposition.Effects mod = RandomEffects(data.y, data.x, weights=data.w) no_ss = mod.fit() ss = mod.fit(small_sample=True) if y.dataframe.shape[0] == mod.dependent.dataframe.shape[0]: assert ss.variance_decomposition.Effects == no_ss.variance_decomposition.Effects else: assert ss.variance_decomposition.Effects != no_ss.variance_decomposition.Effects
def test_results_access(data): mod = RandomEffects(data.y, data.x) res = mod.fit(debiased=False) d = dir(res) for key in d: if not key.startswith('_'): val = getattr(res, key) if callable(val): val()
def test_fitted_effects_residuals(data): mod = RandomEffects(data.y, data.x) res = mod.fit() expected = mod.exog.values2d @ res.params.values expected = pd.DataFrame(expected, index=mod.exog.index, columns=["fitted_values"]) assert_allclose(res.fitted_values, expected) assert_frame_similar(res.fitted_values, expected) expected.iloc[:, 0] = res.resids expected.columns = ["idiosyncratic"] assert_allclose(res.idiosyncratic, expected) assert_frame_similar(res.idiosyncratic, expected) fitted_error = res.fitted_values + res.idiosyncratic.values expected.iloc[:, 0] = mod.dependent.values2d - fitted_error expected.columns = ["estimated_effects"] assert_allclose(res.estimated_effects, expected) assert_frame_similar(res.estimated_effects, expected)
def test_results_access(data): mod = RandomEffects(data.y, data.x) res = mod.fit(debiased=False) access_attributes(res)
from linearmodels.panel.data import PanelData import numpy as np import pandas as pd from statsmodels.datasets import grunfeld from linearmodels.panel.model import RandomEffects from linearmodels.tests.panel._utility import generate_data data = pd.read_stata( r'C:\git\linearmodels\linearmodels\tests\panel\results\simulated-panel.dta' ) data = data.set_index(['firm', 'time']) mod = RandomEffects(data.y, data[['intercept', 'x1', 'x2', 'x3', 'x4', 'x5']]) res = mod.fit() print(res.variance_decomposition) res = mod.fit(small_sample=True) print(res.variance_decomposition) raise NotImplementedError mod = RandomEffects( data.y_light, data[[ 'intercept', 'x1_light', 'x2_light', 'x3_light', 'x4_light', 'x5_light' ]]) res = mod.fit() import numpy as np from statsmodels.datasets import grunfeld data = grunfeld.load_pandas().data data.year = data.year.astype(np.int64) from linearmodels import PanelOLS