我有一个很大的GDP数据集,我试图在它上运行一个VAR模型。它包含世界上所有国家的48个国内生产总值指标,共计194项。因此,每个国家都有自己的指标价值。这意味着每个国家都有自己的48栏。时间序列从1950年到2017年不等。每个国家的指标值。所以这是一个相当大的数据集。因为这是我在python中用于var建模的第一个代码。我在这个过程中有很多问题。
我试图在数据集上运行格兰杰因果关系测试,但是这个错误外挂包含inf或nans。
from statsmodels.tsa.stattools import grangercausalitytests
maxlag=12
test = 'ssr-chi2test'
def grangers_causality_matrix(data, variables, test = 'ssr_chi2test', verbose=False):
dataset = pd.DataFrame(np.zeros((len(variables), len(variables))), columns=variables, index=variables)
for c in dataset.columns:
for r in dataset.index:
test_result = grangercausalitytests(data[[r,c]], maxlag=maxlag, verbose=False)
p_values = [round(test_result[i+1][0][test][1],4) for i in range(maxlag)]
if verbose: print(f'Y = {r}, X = {c}, P Values = {p_values}')
min_p_value = np.min(p_values)
dataset.loc[r,c] = min_p_value
dataset.columns = [var + '_x' for var in variables]
dataset.index = [var + '_y' for var in variables]
return dataset
grangers_causality_matrix(dataset, variables = dataset.columns) MissingDataError:局外人包含inf或nans
发布于 2019-09-19 07:30:22
从您的代码中,我只能猜测您在您的数据集中丢失了值(这并不令人惊讶:自1950年以来,我预计每年都不会为小国提供48个不同的GDP指标)。
您应该找到一种策略来处理这些缺失的值。这显然不是一项容易的任务。在各种可能性中:
(naive)
其他一些方法更微妙,但也更难到位。我相信你可以用关键字missing values在网上找到它们。祝你好运!
https://stackoverflow.com/questions/58005681
复制相似问题