def make_age_linear(indata, cyto, ax, confounders): eqn, tmp_cyto = extract_cols(indata, cyto, ['Age']+confounders) y, X = dmatrices(eqn, tmp_cyto, return_type='dataframe') model = sm.OLS(y, X).fit() num = (num for num, col in enumerate(X.columns) if col=='Age').next() if ax is not None: plot_fit(model, num, ax=ax) return model, model.f_pvalue, model.pvalues['Age'], model.params['Age']
def test_plot_oth(self): #just test that they run res = self.res endog = res.model.endog exog = res.model.exog plot_fit(res, 0, y_true=None) plot_partregress(endog, exog, exog_idx=[0, 1]) plot_regress_exog(res, exog_idx=0) plot_ccpr(res, exog_idx=[0]) plot_ccpr(res, exog_idx=[0, 1]) plt.close('all')
def test_plot_oth(self, close_figures): #just test that they run res = self.res plot_fit(res, 0, y_true=None) plot_partregress_grid(res, exog_idx=[0,1]) plot_regress_exog(res, exog_idx=0) plot_ccpr(res, exog_idx=0) plot_ccpr_grid(res, exog_idx=[0]) fig = plot_ccpr_grid(res, exog_idx=[0,1]) for ax in fig.axes: add_lowess(ax) close_or_save(pdf, fig)
def test_plot_oth(self, close_figures): #just test that they run res = self.res plot_fit(res, 0, y_true=None) plot_partregress_grid(res, exog_idx=[0, 1]) plot_regress_exog(res, exog_idx=0) plot_ccpr(res, exog_idx=0) plot_ccpr_grid(res, exog_idx=[0]) fig = plot_ccpr_grid(res, exog_idx=[0, 1]) for ax in fig.axes: add_lowess(ax) close_or_save(pdf, fig)
def test_plot_oth(self): #just test that they run res = self.res endog = res.model.endog exog = res.model.exog plot_fit(res, 0, y_true=None) plot_partregress(endog, exog, exog_idx=[0,1]) plot_regress_exog(res, exog_idx=0) plot_ccpr(res, exog_idx=[0]) plot_ccpr(res, exog_idx=[0,1]) plt.close('all')
def test_plot_oth(self): #just test that they run res = self.res endog = res.model.endog exog = res.model.exog plot_fit(res, 0, y_true=None) plot_partregress_grid(res, exog_idx=[0,1]) plot_regress_exog(res, exog_idx=0) plot_ccpr(res, exog_idx=0) plot_ccpr_grid(res, exog_idx=[0]) fig = plot_ccpr_grid(res, exog_idx=[0,1]) for ax in fig.axes: add_lowess(ax) plt.close('all')
def test_plot_oth(self): #just test that they run res = self.res endog = res.model.endog exog = res.model.exog plot_fit(res, 0, y_true=None) plot_partregress_grid(res, exog_idx=[0, 1]) plot_regress_exog(res, exog_idx=0) plot_ccpr(res, exog_idx=0) plot_ccpr_grid(res, exog_idx=[0]) fig = plot_ccpr_grid(res, exog_idx=[0, 1]) for ax in fig.axes: add_lowess(ax) plt.close('all')
def test_plot_fit(self): res = self.res fig = plot_fit(res, 0, y_true=None) x0 = res.model.exog[:, 0] yf = res.fittedvalues y = res.model.endog px1, px2 = fig.axes[0].get_lines()[0].get_data() np.testing.assert_equal(x0, px1) np.testing.assert_equal(y, px2) px1, px2 = fig.axes[0].get_lines()[1].get_data() np.testing.assert_equal(x0, px1) np.testing.assert_equal(yf, px2) plt.close(fig)
def test_plot_fit(self): res = self.res fig = plot_fit(res, 0, y_true=None) x0 = res.model.exog[:, 0] yf = res.fittedvalues y = res.model.endog px1, px2 = fig.axes[0].get_lines()[0].get_data() np.testing.assert_equal(x0, px1) np.testing.assert_equal(y, px2) px1, px2 = fig.axes[0].get_lines()[1].get_data() np.testing.assert_equal(x0, px1) np.testing.assert_equal(yf, px2) close_or_save(pdf, fig)
ax = fig6.add_subplot(2, 1, 1) #namestr = ' for %s' % self.name if self.name else '' x1beta = x1 * res.params[1] x2beta = x2 * res.params[2] plt.plot(x1, x1beta + res.resid, 'o') plt.plot(x1, x1beta, '-') ax.set_title('X_i beta_i plus residuals versus exog (CCPR)') # + namestr) ax = fig6.add_subplot(2, 1, 2) plt.plot(x2, x2beta + res.resid, 'o') plt.plot(x2, x2beta, '-') #print res.summary() doplots = 1 if doplots: fig1 = smrp.plot_fit(res, 0, y_true=None) smrp.plot_fit(res, 1, y_true=None) smrp.plot_partregress(y, exog0, exog_idx=[0, 1]) smrp.plot_regress_exog(res, exog_idx=0) smrp.plot_ccpr(res, exog_idx=[0]) smrp.plot_ccpr(res, exog_idx=[0, 1]) from statsmodels.graphics.tests.test_regressionplots import TestPlot tp = TestPlot() tp.test_plot_fit() fig1 = smrp.plot_partregress(y, exog0, exog_idx=[0, 1]) #add lowess ax = fig1.axes[0] y0 = ax.get_lines()[0]._y x0 = ax.get_lines()[0]._x
####### #Spread Stationarity ###### #Testing for Stationarity on RDA, RDB, Total, Repsol and Centrica #Testing for Stationarity on RDA, RDB concMergered = [RDA['Close'], RDB['Close']] combo = pd.concat(concMergered, axis=1).dropna() combo.columns = ["RDA", "RDB"] model = statsm.ols(formula="RDA~RDB", data=combo) result1 = model.fit() result1.params result1.summary() #plt.plot(result,label='Ordinary least Squares',color='Black') # graph of best fit #statsgraph.plot_fit(result, 1,label='Ordinary least Squares',color='Black') statsgraph.plot_fit(result1, 1) #Testing for Stationarity on Ge, ?, R^2 should be near 1 ( best so far 68% ge on Amazon) # Apple, exxon, Wells no # Microsoft, facebook, WallMart so so #JohnsonJ not great ####### Amazon & Alphabet 68% #Apple on Google 43% # JPM-Wells 67%, Citi no,BOA no, Goldamn 50% # Barcalys - Lloyds 43%-HSBC 62%-Stan 54%-RBS 55% # royal Dutch is stationary hence strong evidence of cointgeration # Credit Suisse - DB 86% #concMergeredCO = [BP['Close'], RDA['Close']] #Another example Centrica and repsol concMergeredCO = [Centrica['Close'], Repsol['Close']]
def test_graphs(self, res): col_num = self.X.shape[1] rp.plot_fit(res, exog_idx=col_num - 3) rp.plot_regress_exog(res, exog_idx=col_num - 1, fig=None) rp.plot_leverage_resid2(res) # squared
auto.head() auto_complete = auto.dropna() auto_complete.shape # # Linear Regression: mpg ~ weight + price # ## descriptive statistics auto['mpg'].describe() auto[['mpg', 'weight']].describe() auto[['mpg', 'weight']].mean() auto[['mpg', 'weight']].std() sns.pairplot(auto, vars=['mpg', 'weight', 'price'], kind='reg') model1 = ols('mpg ~ weight + price', data=auto) fit1 = model1.fit() fit1.summary() plot_fit(fit1, 'weight') fit1.predict() fit1.resid # ## Interaction Terms (will include main effects) ols('mpg ~ weight * price', data=auto).fit().summary() # ## model with categorical variable & robust standard errors (same as Stata's reg, robust) # ### [documentation for standard errors](https://www.statsmodels.org/dev/generated/statsmodels.regression.linear_model.RegressionResults.html) (search for HC0_se, HC1_se, etc.) auto.groupby('foreign').size() auto.groupby('foreign').mpg.mean() sns.pairplot(auto, vars=['mpg', 'weight', 'price'], kind='reg', hue='foreign') fit2 = ols('mpg ~ weight + price + foreign', data=auto).fit(cov_type='HC1') fit2.summary() fit2.params fit2.bse
#namestr = ' for %s' % self.name if self.name else '' x1beta = x1*res.params[1] x2beta = x2*res.params[2] plt.plot(x1, x1beta + res.resid, 'o') plt.plot(x1, x1beta, '-') ax.set_title('X_i beta_i plus residuals versus exog (CCPR)')# + namestr) ax = fig6.add_subplot(2,1,2) plt.plot(x2, x2beta + res.resid, 'o') plt.plot(x2, x2beta, '-') #print res.summary() doplots = 1 if doplots: fig1 = smrp.plot_fit(res, 0, y_true=None) smrp.plot_fit(res, 1, y_true=None) smrp.plot_partregress_grid(res, exog_idx=[0,1]) smrp.plot_regress_exog(res, exog_idx=0) smrp.plot_ccpr(res, exog_idx=0) smrp.plot_ccpr_grid(res, exog_idx=[0,1]) from statsmodels.graphics.tests.test_regressionplots import TestPlot tp = TestPlot() tp.test_plot_fit() fig1 = smrp.plot_partregress_grid(res, exog_idx=[0,1]) #add lowess ax = fig1.axes[0] y0 = ax.get_lines()[0]._y x0 = ax.get_lines()[0]._x
def DailyReturn(Prices): returns = Prices.shift(1) / Prices - 1 return returns.dropna() ReturnTotal = DailyReturn(Total['Close']) ReturnCentrica = DailyReturn(Repsol['Close']) concMergered = [RDA['Close'], RDB['Close']] combo = pd.concat(concMergered, axis=1).dropna() combo.columns = ["RDA", "RDB"] model = statsm.ols(formula="RDA~RDB", data=combo) result1 = model.fit() statsgraph.plot_fit(result1, 1) concMergeredCO = [Centrica['Close'], Repsol['Close']] comboCO = pd.concat(concMergeredCO, axis=1).dropna() comboCO.columns = ["Centrica", "Repsol"] model = statsm.ols(formula=" Centrica~Repsol", data=comboCO) resultCO = model.fit() # Demonstrates clarity for the error term in the model parameters against the residuals # No drift term residualsCO = resultCO.resid concMergeredMV = [ RDA['Close'], RDB['Close'], Total['Close'], Repsol['Close'], Centrica['Close'] ]