сохранить регрессию модели регрессии на df с помощью nans - PullRequest
0 голосов
/ 08 октября 2018
>>> df = pd.DataFrame({'a': [1,1,1,1,2,2,2,2], 'b': [0,0,np.nan,1,0,0,1,1], 'c': [5,5,5,np.nan,9,9,6,6]})
>>> df
   a    b    c
0  1  0.0  5.0
1  1  0.0  5.0
2  1  NaN  5.0
3  1  1.0  NaN
4  2  0.0  9.0
5  2  0.0  9.0
6  2  1.0  6.0
7  2  1.0  6.0

Чтобы сохранить прогнозы из регрессии a ~ b, я делаю:

>>> df['pr'] = np.nan
>>> idx = df[(~df.a.isnull()) & (~df.b.isnull())].index
>>> df.loc[idx,'pr'] = sm.OLS(df.a, df.b, missing = 'drop').fit().predict()
>>> df
   a    b    c        pr
0  1  0.0  5.0  0.000000
1  1  0.0  5.0  0.000000
2  1  NaN  5.0       NaN
3  1  1.0  NaN  1.666667
4  2  0.0  9.0  0.000000
5  2  0.0  9.0  0.000000
6  2  1.0  6.0  1.666667
7  2  1.0  6.0  1.666667
  1. Есть ли какой-либо недостаток в этой логике, что-либо, что может привести к ошибкам в моих данных?
  2. Есть ли более простой способ сделать это?Например, Stata, которая более специфична для конкретной цели, сама все это вычислит, когда найдет нули.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...