×

Welcome to TagMyCode

Please login or create account to add a snippet.
0
0
 
0
Language: Python
Posted by: Levente Endre Nádai
Added: Jan 6, 2020 10:40 PM
Views: 4227
  1.         import statsmodels.formula.api as sm
  2.         def backwardElimination(x, SL):
  3.             numVars = len(x[0])
  4.             temp = np.zeros((50,6)).astype(int)
  5.             for i in range(0, numVars):
  6.                 regressor_OLS = sm.OLS(y, x).fit()
  7.                 maxVar = max(regressor_OLS.pvalues).astype(float)
  8.                 adjR_before = regressor_OLS.rsquared_adj.astype(float)
  9.                 if maxVar > SL:
  10.                     for j in range(0, numVars - i):
  11.                         if (regressor_OLS.pvalues[j].astype(float) == maxVar):
  12.                             temp[:,j] = x[:, j]
  13.                             x = np.delete(x, j, 1)
  14.                             tmp_regressor = sm.OLS(y, x).fit()
  15.                             adjR_after = tmp_regressor.rsquared_adj.astype(float)
  16.                             if (adjR_before >= adjR_after):
  17.                                 x_rollback = np.hstack((x, temp[:,[0,j]]))
  18.                                 x_rollback = np.delete(x_rollback, j, 1)
  19.                                 print (regressor_OLS.summary())
  20.                                 return x_rollback
  21.                             else:
  22.                                 continue
  23.             regressor_OLS.summary()
  24.             return x
  25.          
  26.         SL = 0.05
  27.         X_opt = X[:, [0, 1, 2, 3, 4, 5]]
  28.         X_Modeled = backwardElimination(X_opt, SL)
  29.  
  30.