@@ -381,6 +381,43 @@ def y_predict(self):
381
381
For in-sample, this is same as y_fitted."""
382
382
return self .y_fitted
383
383
384
+ def predict (self , new_y_values , fill_value = None , fill_method = None ,
385
+ axis = 0 ):
386
+ """
387
+ Parameters
388
+ ----------
389
+ new_y_values : Series or DataFrame
390
+ fill_value : scalar or dict, default None
391
+ fill_method : {'backfill', 'bfill', 'pad', 'ffill', None}, default None
392
+ axis : {0, 1}, default 0
393
+ See DataFrame.fillna for more details
394
+
395
+ Notes
396
+ -----
397
+ 1. If both fill_value and fill_method are None then NaNs are dropped
398
+ (this is the default behavior)
399
+ 2. An intercept will be automatically added to the new_y_values if
400
+ the model was fitted using an intercept
401
+
402
+ Returns
403
+ -------
404
+ Series of predicted values
405
+ """
406
+ orig_y = new_y_values
407
+ if fill_value is None and fill_method is None :
408
+ new_y_values = new_y_values .dropna (how = 'any' )
409
+ else :
410
+ new_y_values = new_y_values .fillna (value = fill_value ,
411
+ method = fill_method , axis = axis )
412
+ if isinstance (new_y_values , Series ):
413
+ new_y_values = DataFrame ({'x' : new_y_values })
414
+ if self ._intercept :
415
+ new_y_values ['intercept' ] = 1.
416
+
417
+ new_y_values = new_y_values .reindex (columns = self ._x .columns )
418
+ rs = self .sm_ols .model .predict (new_y_values .values )
419
+ return Series (rs , new_y_values .index ).reindex (orig_y .index )
420
+
384
421
RESULT_FIELDS = ['r2' , 'r2_adj' , 'df' , 'df_model' , 'df_resid' , 'rmse' ,
385
422
'f_stat' , 'beta' , 'std_err' , 't_stat' , 'p_value' , 'nobs' ]
386
423
0 commit comments