У меня есть следующий фрейм данных с именем 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
Спасибо за вашу помощь!