我正在使用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 = 8.5-2.5
其中8.5来自y的最后四个数字,而2.5来自z的最后四个数字。
我正在使用时间序列数据在MATLAB中进行回归,对于某些序列,在序列开始时缺少数据NaN。我想知道如何处理它们,上面的示例是一个Complete Minimal示例。
编辑:
对于一个稍微复杂的示例,尝试使用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的地方。
答案 0 :(得分:3)
原始问题的答案:
您可以通过提供标志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
的含义,因为您要删除索引。我认为在这种情况下,您将必须决定适合数据处理的方式。如果您只想用其他值(例如0)替换NaN,则可以使用fillmissing
来完成。