Работа с NaN в Matlab, простые задачи - PullRequest
0 голосов
/ 03 декабря 2018

Я работаю с данными в Matlab.

См. Код:

x = rand(10,1)
y = [1,2,3,4,5,6,7,8,9,10]'
z = [NaN, NaN, NaN, NaN, 1, 2, 3, 4]'

ww = mean(z)-mean(y)

Исходя из этого, ww = Nan как мне работать с этими значениями NaN, я бы хотел, чтобы ww был,

ww = 8.5-2.5

С 8.5, полученным из последних четырех чисел в y, и 2.5 - из последних четырех цифр в z.

Я делаю регрессии в MATLAB с данными временных рядов, для некоторых рядов отсутствуют данные NaN в начале ряда.Мне интересно, как с ними справиться, и приведенный выше пример является завершенным минимальным примером.

Редактировать:

Для немного более сложного примера, попытаться использовать archtest

clear;
%data
data = xlsread('RETURNS.xlsx',2);

for jj = 2:51
    for ii = 1:12
        residuals = data(:,jj) - mean(data(:,jj));
        h(jj,ii) = archtest(residuals,'Lags',ii);
    end
end

Где есть NaN в некоторых столбцах.

1 Ответ

0 голосов
/ 03 декабря 2018

Ответ на оригинальный вопрос:

Вы можете указать функции mean и нескольким другим игнорировать значения NaN, указав флаг omitnan:

 y = [1,2,3,4,5,6,7,8,9,10]'
 z = [NaN, NaN, NaN, NaN, 1, 2, 3, 4]'

 ww = mean(z,'omitnan')-mean(y,'omitnan')

Некоторые другие функции, такие как max, min, sum, prod и т. Д., Также принимают этот флаг.

И в качестве отступления, если вы работаете с временными рядамиданные, вы можете проверить, можете ли вы использовать timetable.Это может упростить некоторые ваши рабочие процессы.

Ответ на обновленный вопрос :

Я не уверен, что делает archtest, поскольку это не в моей областиопыт, но если ваш рабочий процесс подходит просто для удаления NaN, то вы можете использовать rmmissing в качестве шага предварительной обработки для их удаления.Однако я не уверен, повлияет ли это на значение Lags, поскольку вы удаляете индексы.Я думаю, что в этом случае вам придется решить, что делать с вашими данными.Если вы просто хотите заменить NaN каким-либо другим значением (например, 0), вы можете использовать fillmissing для этого.

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