Множественная линейная регрессия - удалите только пропущенное значение, а не всю строку - Python - PullRequest
1 голос
/ 16 июня 2020

У меня есть зависимая переменная и много разных независимых переменных. В одном из столбцов независимой переменной у меня много значений с нулем или, допустим, «отсутствующее значение». Теперь, когда я выполняю множественную регрессию, на модель влияет ноль, и если это отсутствующее значение, модель удалит всю строку. Я бы хотел, чтобы модель не учитывала эту переменную, если это нулевое или отсутствующее значение, но все же сохраняла другую независимую переменную для прогнозирования модели.

Вот пример множественной линейной регрессии:

from statsmodels.formula.api import ols

fit = ols('Wage ~ C(Sex_male) + C(Job) + Age', data=df).fit() 

fit.summary()

                            OLS Regression Results                            
==============================================================================
Dep. Variable:                   Wage   R-squared:                       0.592
Model:                            OLS   Adj. R-squared:                  0.048
Method:                 Least Squares   F-statistic:                     1.089
Date:                Wed, 06 Jun 2018   Prob (F-statistic):              0.492
Time:                        22:35:43   Log-Likelihood:                -104.59
No. Observations:                   8   AIC:                             219.2
Df Residuals:                       3   BIC:                             219.6
Df Model:                           4                                         
Covariance Type:            nonrobust                                         
=======================================================================================
                          coef    std err          t      P>|t|      [0.025      0.975]
---------------------------------------------------------------------------------------
Intercept             3.67e+05   3.22e+05      1.141      0.337   -6.57e+05    1.39e+06
C(Sex_male)[T.1]     2.083e+05   1.39e+05      1.498      0.231   -2.34e+05    6.51e+05
C(Job)[T.Assistant] -2.167e+05   1.77e+05     -1.223      0.309    -7.8e+05    3.47e+05
C(Job)[T.Professor] -9273.0556   1.61e+05     -0.058      0.958   -5.21e+05    5.03e+05
Age                 -3823.7419   6850.345     -0.558      0.616   -2.56e+04     1.8e+04
==============================================================================
Omnibus:                        0.479   Durbin-Watson:                   1.620
Prob(Omnibus):                  0.787   Jarque-Bera (JB):                0.464
Skew:                          -0.108   Prob(JB):                        0.793
Kurtosis:                       1.839   Cond. No.                         215.
==============================================================================

Предположим, что в Age отсутствует значение, тогда заработная плата будет предсказана другими независимыми переменными (C (Sex_male) + C (Job) et c.) При этом количество наблюдений останется прежним: 8. Недостающее значение в строке будет «забыто»

Есть ли функция что существует для его выполнения?

Спасибо.

1 Ответ

1 голос
/ 17 июня 2020

Если вы не хотите, чтобы модель учитывала переменные с отсутствующими значениями или значениями, равными нулю, просто удалите эти модели из набора данных.

import pandas as pd

# Drop variables with missing values
dataset_clean.dropna(axis = 1, inplace = True)

# Drop variables with values of zero
dataset_clean = dataset_clean.loc[:, ~(dataset_clean == 0).any()]

Затем вставьте новый фрейм данных в свою модель.

...