发布时间:2025-12-10 11:19:00 浏览次数:8
原理部分
步骤
#mermaid-svg-kEtkcqkpRzxjdoOv {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-kEtkcqkpRzxjdoOv .error-icon{fill:#552222;}#mermaid-svg-kEtkcqkpRzxjdoOv .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-kEtkcqkpRzxjdoOv .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-kEtkcqkpRzxjdoOv .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-kEtkcqkpRzxjdoOv .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-kEtkcqkpRzxjdoOv .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-kEtkcqkpRzxjdoOv .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-kEtkcqkpRzxjdoOv .marker{fill:#333333;stroke:#333333;}#mermaid-svg-kEtkcqkpRzxjdoOv .marker.cross{stroke:#333333;}#mermaid-svg-kEtkcqkpRzxjdoOv svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-kEtkcqkpRzxjdoOv .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-kEtkcqkpRzxjdoOv .cluster-label text{fill:#333;}#mermaid-svg-kEtkcqkpRzxjdoOv .cluster-label span{color:#333;}#mermaid-svg-kEtkcqkpRzxjdoOv .label text,#mermaid-svg-kEtkcqkpRzxjdoOv span{fill:#333;color:#333;}#mermaid-svg-kEtkcqkpRzxjdoOv .node rect,#mermaid-svg-kEtkcqkpRzxjdoOv .node circle,#mermaid-svg-kEtkcqkpRzxjdoOv .node ellipse,#mermaid-svg-kEtkcqkpRzxjdoOv .node polygon,#mermaid-svg-kEtkcqkpRzxjdoOv .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-kEtkcqkpRzxjdoOv .node .label{text-align:center;}#mermaid-svg-kEtkcqkpRzxjdoOv .node.clickable{cursor:pointer;}#mermaid-svg-kEtkcqkpRzxjdoOv .arrowheadPath{fill:#333333;}#mermaid-svg-kEtkcqkpRzxjdoOv .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-kEtkcqkpRzxjdoOv .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-kEtkcqkpRzxjdoOv .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-kEtkcqkpRzxjdoOv .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-kEtkcqkpRzxjdoOv .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-kEtkcqkpRzxjdoOv .cluster text{fill:#333;}#mermaid-svg-kEtkcqkpRzxjdoOv .cluster span{color:#333;}#mermaid-svg-kEtkcqkpRzxjdoOv p.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-kEtkcqkpRzxjdoOv :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}数据导入单位根检验差分协整格兰杰检验数据使用开源数据集,便于实现
#数据集import statsmodels.api as smfrom statsmodels.tsa.stattools import grangercausalitytestsimport numpy as npdata = sm.datasets.macrodata.load_pandas()demo = data.data方法与通用的时间序列方法相同
demo[['realgdp','realcons']].plot() from statsmodels.tsa.stattools import adfullerprint(adfuller(demo['realgdp']))(1.7504627967647173, 0.9982455372335032, 12, 190, {'1%': -3.4652439354133255, '5%': -2.8768752281673717, '10%': -2.574944653739612}, 2034.517123668382)再次检验单位根
print(adfuller(demo['diff1_realgdp']))print(adfuller(demo['diff1_realcons']))(-6.287524437690158, 3.66693821207135e-08, 1, 201, {‘1%’: -3.4633090972761744, ‘5%’: -2.876029332045744, ‘10%’: -2.5744932593252643}, 2034.8610305811367)
(-4.206384895591229, 0.0006426930660370949, 3, 199, {‘1%’: -3.4636447617687436, ‘5%’: -2.8761761179270766, ‘10%’: -2.57457158581854}, 1793.118209620634)
p=5.182509395533684e-26 < 0.05,说明在长期是存在相关性的
Granger causality test的思想
如果使用时间序列X和Y的历史值来预测Y的当前值,比仅通过Y的历史值来预测Y的当前值得到的误差更小,并且通过了F检验,卡方检验,则X对Y的预测是有一定帮助的。
了解了Granger causality test的思想之后会发现,其实Granger causality test最多能推断出X对Y的预测是有一定帮助的,至于是否能说X和Y是因果关系,则不一定。
Granger Causality
number of lags (no zero) 1
ssr based F test: F=0.1851 , p=0.6675 , df_denom=199, df_num=1
ssr based chi2 test: chi2=0.1879 , p=0.6646 , df=1
likelihood ratio test: chi2=0.1878 , p=0.6647 , df=1
parameter F test: F=0.1851 , p=0.6675 , df_denom=199, df_num=1
Granger Causality
number of lags (no zero) 2
ssr based F test: F=22.9218 , p=0.0000 , df_denom=196, df_num=2
ssr based chi2 test: chi2=47.0132 , p=0.0000 , df=2
likelihood ratio test: chi2=42.2456 , p=0.0000 , df=2
parameter F test: F=22.9218 , p=0.0000 , df_denom=196, df_num=2
函数解读:
该方法接收一个包含2列的2维的数组作为主要参数:
df_num=1 即滞后一阶时,p>0.05,不能拒绝原假设
df_num=2即滞后二阶时,P值小于0.05,通过检验,也就是拒绝了realcons不是引起realgdp格兰杰变化的原因,即realcons是引起realgdp格兰杰变化的原因
同理可以查看
realgdp是否是引起realcons格兰杰变化的原因