Я работаю над кодом для извлечения моего параметра AR(1)-GARCH(1), который я оценил с помощью модели AR(1)-GJR(1,1) для отдельных матриц, чтобы я мог использовать их в качестве переменных в моем расчеты. Поскольку у меня есть 16 переменных временных рядов, я комбинирую код с циклом следующим образом:
for i=1:nIndices
AA_ARCH(:,i) = cell2mat(fit{i}.Variance.ARCH)';
end;
Моя проблема в том, что для некоторых переменных нет, для AA_ARCH(:,i) размерность меньше, чем nIndices. Естественно, когда я пытаюсь экспортировать оценки в цикле, в котором указана размерность (:, i) и nIndices, Matlab сообщает о несоответствии размерности. Я хотел бы сказать Matlab заменить NaN на 0 вместо того, чтобы оставлять место пустым, чтобы он мог создать матрицу (1, nIndices) из AA_ARCH.
Я подумал о чем-то вроде этого:
fit{i}.Variance.Leverage(isnan(fit{i}.Variance.Leverage))=0
но я не смог совместить эту часть с предыдущим кодом.
Буду очень рад любой подсказке!
Бест, Кэролин
ОБНОВИТЬ:
Вот полностью работоспособная версия моего кода, которая создает мою проблему. Обратите внимание, что код выдает ошибку несоответствия размеров, потому что в fit.gjr(1,1) для временного ряда 1 нет оценок ARCH и GARCH. Для этих отсутствующих значений я хотел бы иметь 0 в качестве заполнителя в извлеченной матрице.
returns = randn(2,750)';
T = size(returns,1);
nIndices = 2;
model = arima('AR', NaN, 'Variance', gjr(1,1));
residuals = NaN(T, nIndices);
variances = NaN(T, nIndices);
fit = cell(nIndices,1);
options = optimset('fmincon');
options = optimset(options, 'Display' , 'off', 'Diagnostics', 'off', ...
'Algorithm', 'sqp', 'TolCon' , 1e-7);
for i = 1:nIndices
fit{i} = estimate(model, returns(:,i), 'print', false, 'options', options);
[residuals(:,i), variances(:,i)] = infer(fit{i}, returns(:,i));
end
for i=1:nIndices
AA_beta(:,i) = cell2mat(fit{i}.AR)';
AA_GARCH(:,i) = cell2mat(fit{i}.Variance.GARCH)';
AA_ARCH(:,i) = cell2mat(fit{i}.Variance.ARCH)';
AA_Leverage(:,i) = cell2mat(fit{i}.Variance.Leverage)';
end;
fit
? Где это определено? Кроме того, не могли бы вы более четко определить вашу конкретную проблему (проблемы)? Заменяет ли значения NaN нулями в сложной структуре данных? Это с экспортом каких-то данных из MATLAB (в таком случае - скажите, как и куда вы пытаетесь экспортировать)? Это предложения о том, как хранить данные или оптимизировать алгоритм (например, избавиться от цикла)? Попробуйте предоставить выполнимый фрагмент кода, который воспроизводит вашу проблему, и покажите желаемый результат. - person Dev-iL   schedule 14.06.2015NaN
и[]
по-разному, потому что они концептуально различны:NaN
обычно означает бесконечность (или просто результат операций, которые имеют неопределенные числовые результаты), но иногда используется в качестве заполнителя для других значений, тогда как[]
(пустые) значения служит другой цели... - person Dev-iL   schedule 14.06.2015