{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 分位数Granger因果检验" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 原理讲解\n", "### 各变量含义\n", "\n", "待估计方程:\n", "\n", "$$\n", "Q_{Y_{t}}\\left[\\tau | Z_{t-1}\\right]=a(\\tau)+Y_{t-1, p}^{\\prime} \\alpha(\\tau)+X_{t-1, q}^{\\prime} \\beta(\\tau)=Z_{t-1}^{\\prime} \\theta(\\tau)\\tag{1}\n", "$$\n", "\n", "其中,$a(\\tau)$为截距项,$\\alpha(\\tau)$和$\\beta(\\tau)$为回归系数列向量;$\\theta(\\tau)$为回归系数向量,\n", "\n", "$$\n", "a(\\tau)=\\left[alpha(\\tau), \\alpha(\\tau)^{\\prime}, \\beta(\\tau)^{\\prime}\\right]^{\\prime}\\tag{2}\n", "$$\n", "\n", "$$\n", "\\quad Y_{t-1, p}^{\\prime}=\\left(Y_{t-1}, \\cdots, Y_{t-p}\\right)\\tag{3}\n", "$$\n", "\n", "$$\n", "\\quad X_{t-1, q}^{\\prime}=\\left(X_{t-1}, \\cdots, X_{t-q}\\right)\\tag{4}\n", "$$\n", "\n", "$$\n", "Z_{t-1}^{\\prime}=\\left(Y_{t-1, p}^{\\prime}, X_{t-1, q}^{\\prime}\\right)\\tag{5}\n", "$$\n", "\n", "Wald检验量为:\n", "\n", "$$\\mathrm{W}_{T}(\\tau)=T \\frac{\\hat{\\beta}(\\tau)^{\\prime} \\hat{\\Sigma}(\\tau)^{-1} \\hat{\\beta}(\\tau)}{\\tau(1-\\tau)}\\tag{6}$$\n", "\n", "Sup-Wald检验量为:\n", "\n", "$$\\sup W_{T}=\\sup _{i=1, \\cdots, n} W_{T\\left(\\tau_{i}\\right)}\\tag{7} $$\n", "\n", "> Python在进行分位数回归时,方差默认为核估计\n", "\n", "### 分位数方差核密度估计原理(基于Eviews帮助文件)\n", "**独立但不同分布假设下的参数渐近分布**\n", "\n", "当分位数密度函数独立但不同分布即与解释变量X相关时,$\\sqrt{T}(\\hat{\\beta}(\\tau)-\\beta(\\tau))$的渐近分布服从Huber sandwich形式:\n", "\n", "$$\n", "\\sqrt{T}\\left(\\hat{\\beta}_{(\\tau)}-\\beta_{(\\tau)}\\right){\\sim} N\\left(0, \\tau(1-\\tau) H(\\tau)^{-1} J H(\\tau)^{-1}\\right)\\tag{8}$$\n", "\n", "其中 $T$ 为样本容量,$\\tau$ 为分位点,$\\hat{\\beta}_{(\\tau)}$为 $\\tau$ 分位点下回归系数估计量,$N$ 为正态分布,$X_{i}$ 为解释变量矩阵;\n", "\n", "$$\n", "J=\\lim _{n \\rightarrow \\infty}\\left(\\sum_{i} \\frac{X_{i} X_{i}^{\\prime}}{T}\\right)=\\lim _{n \\rightarrow \\infty}\\left(\\frac{X X}{T}\\right)\\tag{9}\n", "$$\n", "\n", "$$\n", "H(\\tau)=\\lim _{T \\rightarrow \\infty}\\left(\\sum_{i} X_{i} X_{i}^{\\prime} f_{i}\\left(q_{i}(\\tau)\\right) / T\\right)\\tag{10}\n", "$$\n", "\n", "$f_{i}\\left(q_{i}(\\tau)\\right)$ 是个体 $i$ 在 $\\tau$ 分位点上的条件密度函数。使用核密度进行估计: \n", "\n", "$$\n", "\\hat{H}(\\tau)=(1 / T) \\sum_{i=1}^{T} c_{T}^{-1} K\\left(\\hat{u}_{(\\tau) t} / c_{T}\\right) X_{i} X_{i}^{\\prime}\\tag{11}$$\n", "\n", "其中 $\\hat{\\mathcal{u}}_{(\\tau) i}$ 表示分位数回归的残差;$c_T$ 为带宽,估计原理见下文;表示 $\\kappa$ 核密度函数。EViews 中可以选择的核密度函数有 Epanechnikov 核函数(默认)、均匀 (Uniform) 核函数、三角(Triangular)核函数、二权(Biweight)核函数、三权(Triweight)核函数、正态(Normal)核函数、余弦(Cosinus)核函数,具体函数形式见图。\n", "\n", "<img src=\"https://raw.githubusercontent.com/lei940324/picture/master/typora202003/31/180818-928273.png\" alt=\"image-20200331180810735\" style=\"zoom:67%;\" /> \n", "\n", "\n", "\n", "$c_T$ 的估计原理:\n", "\n", "$$c_{T}=\\kappa\\left(\\Phi^{-1}\\left(\\tau+h_{n}\\right)-\\Phi^{-1}\\left(\\tau-h_{n}\\right)\\right)\\tag{12}$$ \n", "\n", "其中 $\\kappa=\\min (s, I Q R / 1.34)$,$IQR$ 为四分位距,$\\mathrm{I} Q \\mathrm{R}=Q_{3}-Q_{1}$;$s$ 为残差的标准差;$h_n$ 是 Siddiqui 带宽,\n", "\n", "$$\n", "h_{n}=T^{-1 / 3} Z_{\\alpha}^{2 / 3}\\left(\\frac{1.5\\left(\\varphi\\left(\\Phi^{-1}(\\tau)\\right)\\right)^{2}}{2\\left(\\Phi^{-1}(\\tau)\\right)^{2}+1}\\right)^{1 / 3}\\tag{13}\n", "$$\n", "\n", "$\\Phi$ 表示正态分布的积累分布函数,$\\Phi^{-1}$ 表示正态分布的逆函数,$\\varphi$ 表示正态分布的密度函数,$Z_{\\alpha}=\\Phi^{-1}(1-\\alpha / 2)$ 为选择的显著性水平 $\\alpha$ 对应的 $Z$ 值。\n", "\n", "> 文中只列出一种方差的估计原理,更多内容详见Eviews 8 帮助文件" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 使用 statsmodels 库实现" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "在 github 里写了一个 [Quantile 项目](https://github.com/lei940324/Quantile),使用 `pyqt5` 进行 GUI 可视化,有兴趣的朋友可以进行参考" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## matlab实现" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "可以参考 matlab 代码:[Granger 因果检验](https://github.com/lei940324/econometrics/tree/master/matlab代码/分位数回归/Granger因果检验)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.6" } }, "nbformat": 4, "nbformat_minor": 4 }