Вменение MICE с учетом ограничений Python - PullRequest
0 голосов
/ 18 июня 2020

У меня есть следующий фрейм данных с именем df_company:

Company_ID  Year   M1     M2       MTOT
1           2010   10     20       30 
1           2011   NaN    Nan      40
1           2012   30     NaN      NaN   
1           2013   50     NaN      NaN      
2           2012   50     60       110       
2           2013   60     0        60       
2           2014   10     NaN      NaN       
3           2011   NaN    100      NaN    

Моя цель - выполнить условное исчисление MICE для финансовых отчетов, таких как балансы и отчеты о прибылях и убытках.

Однако эти отчеты имеют такие свойства, как как Metric_1 + Metric_2 = Metric_Total. Выполнение MICE без ограничения алгоритма для следования этим свойствам приведет к вмененным данным, которые составляют M1 + M2! = MTOT.

Допустим, у меня есть следующие отношения:

M1 + M2 = MTOT

Как я могу измените следующую функцию для MICE так, чтобы она учитывала отношения сверху:

def impute_MICE(df_company):
    df_company_columns = df_company.columns
    imp_mean = IterativeImputer(initial_strategy = "mean", n_nearest_features = 15, random_state = 0, imputation_order="ascending")
    x = imp_mean.fit(df_company)
    X = df_company
    df_MICE_imputed = pd.DataFrame(imp_mean.transform(X))
    df_MICE_imputed.columns = df_company_columns
    return df_MICE_imputed

Ожидаемый результат должен выглядеть примерно так, как показано ниже, однако я просто угадал эти числа, так как они близки к среднему значению ближайших соседей . Пока соблюдается соотношение M1 + M2 = MTOT, я считаю данные хорошими.

Company_ID  Year   M1     M2       MTOT
1           2010   10     20       30 
1           2011   20     20       40
1           2012   30     30       60   
1           2013   50     40       90      
2           2012   50     60       110       
2           2013   60     0        60       
2           2014   10     0        10       
3           2011   0      100      100 

Спасибо за вашу помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...