def setup_class(cls): #example 3 nobs = 300 nobs_i = 5 n_groups = nobs // nobs_i k_vars = 3 from statsmodels.sandbox.panel.random_panel import PanelSample dgp = PanelSample(nobs, k_vars, n_groups) dgp.group_means = 2 + np.random.randn(n_groups) #add random intercept print('seed', dgp.seed) y = dgp.generate_panel() x = np.column_stack( (dgp.exog[:, 1:], dgp.groups[:, None] == np.arange(n_groups))) cls.dgp = dgp cls.endog = y cls.exog = x cls.res_ols = OLS(y, x).fit()
def setup_class(cls): #example 3 nobs = 300 nobs_i = 5 n_groups = nobs // nobs_i k_vars = 3 from statsmodels.sandbox.panel.random_panel import PanelSample dgp = PanelSample(nobs, k_vars, n_groups) dgp.group_means = 2 + np.random.randn(n_groups) #add random intercept print('seed', dgp.seed) y = dgp.generate_panel() x = np.column_stack((dgp.exog[:,1:], dgp.groups[:,None] == np.arange(n_groups))) cls.dgp = dgp cls.endog = y cls.exog = x cls.res_ols = OLS(y, x).fit()
plt.plot(res_ols.fittedvalues, '-', label='ols') plt.plot(res.fittedvalues, '-', label='theil') plt.legend() plt.title('Polynomial fitting: fitted values') #plt.show() if 3 in examples: #example 3 nobs = 600 nobs_i = 20 n_groups = nobs // nobs_i k_vars = 3 from statsmodels.sandbox.panel.random_panel import PanelSample dgp = PanelSample(nobs, k_vars, n_groups) dgp.group_means = 2 + np.random.randn(n_groups) #add random intercept print 'seed', dgp.seed y = dgp.generate_panel() X = np.column_stack( (dgp.exog[:, 1:], dgp.groups[:, None] == np.arange(n_groups))) res_ols = sm.OLS(y, X).fit() R = np.c_[np.zeros((n_groups, k_vars - 1)), np.eye(n_groups)] r = np.zeros(n_groups) R = np.c_[np.zeros((n_groups - 1, k_vars)), np.eye(n_groups - 1) - 1. / n_groups * np.ones( (n_groups - 1, n_groups - 1))] r = np.zeros(n_groups - 1) R[:, k_vars - 1] = -1 lambd = 1 #1e-4 mod = TheilGLS(y, X, r_matrix=R, q_matrix=r, sigma_prior=lambd)
plt.plot(res_ols.fittedvalues, '-', label='ols') plt.plot(res.fittedvalues, '-', label='theil') plt.legend() plt.title('Polynomial fitting: fitted values') #plt.show() if 3 in examples: #example 3 nobs = 600 nobs_i = 20 n_groups = nobs // nobs_i k_vars = 3 from statsmodels.sandbox.panel.random_panel import PanelSample dgp = PanelSample(nobs, k_vars, n_groups) dgp.group_means = 2 + np.random.randn(n_groups) #add random intercept print 'seed', dgp.seed y = dgp.generate_panel() X = np.column_stack((dgp.exog[:,1:], dgp.groups[:,None] == np.arange(n_groups))) res_ols = sm.OLS(y, X).fit() R = np.c_[np.zeros((n_groups, k_vars-1)), np.eye(n_groups)] r = np.zeros(n_groups) R = np.c_[np.zeros((n_groups-1, k_vars)), np.eye(n_groups-1)-1./n_groups * np.ones((n_groups-1, n_groups-1))] r = np.zeros(n_groups-1) R[:, k_vars-1] = -1 lambd = 1 #1e-4 mod = TheilGLS(y, X, r_matrix=R, q_matrix=r, sigma_prior=lambd) res = mod.fit()