为了提供一个最小的示例(我想在众多应用程序中使用此解决方案),我正在使用MATLAB中的regress
函数。
我在MATLAB中拥有的数据是(每月)时间序列,但是某些序列开始时缺少一些数据点。
让我们说Y是任意回归模型中的因变量,我想运行10个回归模型,
$$ Y_t = \ alpha + X_ {i,t-1} $$
因此,我想运行9个模型,其中Y是因变量,每个模型的解释变量从$ X_2 $变为$ X_10 $。
为清楚起见,我想运行9个模型(见图),
我遇到的问题是,我希望第一个使用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
这个问题有所不同,因为它使用了回归函数(昨天是简单的均值),回答者也提供了很多细节和实际可行的解决方案。
答案 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