Рассмотрим следующий (Excel) набор данных:приписывать недостающие данные, а форсирование коэффициент корреляции остаются теми же
m | r
----|------
2.0 | 3.3
0.8 |
| 4.0
1.3 |
2.1 | 5.2
| 2.3
| 1.9
2.5 |
1.2 | 3.0
2.0 | 2.6
Моя цель состоит в том, чтобы заполнить недостающие значения, используя следующее условие:
Обозначим через R парную корреляцию между двумя столбцами (около 0,68). Обозначим через R * корреляцию после пустые ячейки были заполнены. Заполните таблицу так, чтобы (R - R *)^2 = 0. Это, я хочу сохранить корреляционную структуру данных целыми.
До сих пор я сделал это с помощью Matlab:
clear all;
m = xlsread('data.xlsx','A2:A11') ;
r = xlsread('data.xlsx','B2:B11') ;
rho = corr(m,r,'rows','pairwise');
x0 = [1,1,1,1,1,1];
lb = [0,0,0,0,0,0];
f = @(x)my_correl(x,rho);
SOL = fmincon(f,x0,[],[],[],[],lb)
где функция my_correl
является:
function X = my_correl(x,rho)
sum_m = (11.9 + x(1) + x(2) + x(3));
sum_r = (22.3 + x(1) + x(2) + x(3));
avg_m = (11.9 + x(1) + x(2) + x(3))/8;
avg_r = (22.3 + x(4) + x(5) + x(6))/8;
rho_num = 8*(26.32 + 4*x(1) + 2.3*x(2) + 1.9*x(3) + 0.8*x(4) + 1.3*x(5) + 2.5*x(6)) - sum_m*sum_r;
rho_den = sqrt(8*(22.43 + (4*x(1))^2 + (2.3*x(2))^2 + (1.9*x(3))^2) - sum_m^2)*sqrt(8*(78.6 + (0.8*x(4))^2 + (1.3*x(5))^ + (2.5*x(6))^2) - sum_r^2);
X = (rho - rho_num/rho_den)^2;
end
Эта функция вычисляет корреляцию вручную, где каждый отсутствующих данных является переменной x(i)
,
Проблема: мой фактический набор данных имеет более 20 000 наблюдений. Невозможно создать эту формулу вручную вручную.
Как я могу заполнить свой набор данных?
Примечание 1: Я открыт для использования альтернативных языков, таких как Python, Julia или R. Matlab, это мой единственный по умолчанию.
Примечание 2: ответ на 100 баллов будет присужден. Обещай сейчас.
@luchonacho, у вас уже есть свой ответ ниже, но в будущем, если у вас есть более сложный набор данных, с большим количеством столбцов, возможно, вы можете рассмотреть пакет «Amelia». Дополнительную информацию об этом пакете см. На странице http://stats.stackexchange.com/questions/47247/multiple-imputation-with-the-amelia-package. Вмененный набор данных не будет иметь точно такую же корреляцию, как неполный набор данных, но он должен быть близким, учитывая, что Амелия предполагает, что полный набор данных следует за многомерным нормальным распределением. – jav