MATLAB时间序列回归,处理NaN

时间:2018-12-04 10:05:05

标签: matlab

为了提供一个最小的示例(我想在众多应用程序中使用此解决方案),我正在使用MATLAB中的regress函数。

我在MATLAB中拥有的数据是(每月)时间序列,但是某些序列开始时缺少一些数据点。

Example Data

让我们说Y是任意回归模型中的因变量,我想运行10个回归模型,

$$ Y_t = \ alpha + X_ {i,t-1} $$

因此,我想运行9个模型,其中Y是因变量,每个模型的解释变量从$ X_2 $变为$ X_10 $。

为清楚起见,我想运行9个模型(见图),

Equations

我遇到的问题是,我希望第一个使用Y(即data(:,1))和X2(即data(:,2))的模型使用前1000个观测值,但是对于X3,是988个观测值,因此在进行回归时,我想对Y和X3使用988个观测值。

在其他问题中,人们建议将NaN更改为0,但这是不可能的。编辑(显然可以更改为零,但是对于我的模型规范来说这是不可能的)。

%Data
data = rand(1000,10); %add NaNs randomly at the start of the series. 

%Regression
for ii = 2:10
b = regress(data(:,1),data(:,ii))
end

这个问题有所不同,因为它使用了回归函数(昨天是简单的均值),回答者也提供了很多细节和实际可行的解决方案。

1 个答案:

答案 0 :(得分:4)

只需选择非NaNs

%Data
data = rand(1000,10); %add NaNs randomly at the start of the series. 

%Regression
for ii = 2:10
   notnans=~isnan(data(:,ii)); % assuming data(:,1) has no NaNs
   b = regress(data(notnans,1),data(notnans,ii))
end