尝试运行格兰杰因果关系检验

问题描述 投票:0回答:1

我有我的数据集,它看起来像这样

然后我使用我的 r 代码

install.packages("vars")
library(vars)
install.packages("plm")
library(plm)
install.packages("panelvar")
library(panelvar)
data <- read.csv("economistdata.csv")
data$year <- as.integer(data$year)
pdata <- pdata.frame(data, index=c("country", "year"), drop.index = TRUE)
summary(pdata)
var_model <- pvargmm(cbind(interest.rates, inflation) ~ 1, data=pdata, lags=2)
granger_test <- causality(var_model, cause="inflation")
summary(granger_test)
granger_test1 <- causality(var_model, cause="interest.rates")
summary(granger_test1)`

我收到错误

Error in .subset(x, j) : invalid subscript type 'list'

我尝试将其设为向量,但它告诉我该年份或国家不存在

我希望它只是简单地运行回归

我被告知要发布我的数据集:

structure(list(year = c(2019, 2019, 2019, 2019, 2019, 2019, 2019, 
2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 
2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 
2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 
2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 
2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 
2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 
2020, 2020, 2020, 2020, 2020, 2020, 2020, 2021, 2021, 2021, 2021, 
2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 
2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 
2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 
2021, 2021, 2021, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 
2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 
2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 
2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2023, 
2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 
2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 
2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 
2023, 2023, 2023, 2023, 2023, 2023), country = c("United States", 
"China", "Japan", "Britain", "Canada", "Euro area", "Austria", 
"Belgium", "France", "Germany", "Greece", "Italy", "Netherlands", 
"Spain", "Czech Republic", "Denmark", "Norway", "Poland", "Russia", 
"Sweden", "Switzerland", "Turkey", "Australia", "Hong Kong", 
"India", "Indonesia", "Malaysia", "Pakistan", "Philippines", 
"Singapore", "South Korea", "Taiwan", "Thailand", "Brazil", "Chile", 
"Colombia", "Mexico", "Peru", "Israel", "South Africa", "United States", 
"China", "Japan", "Britain", "Canada", "Euro area", "Austria", 
"Belgium", "France", "Germany", "Greece", "Italy", "Netherlands", 
"Spain", "Czech Republic", "Denmark", "Norway", "Poland", "Russia", 
"Sweden", "Switzerland", "Turkey", "Australia", "Hong Kong", 
"India", "Indonesia", "Malaysia", "Pakistan", "Philippines", 
"Singapore", "South Korea", "Taiwan", "Thailand", "Brazil", "Chile", 
"Colombia", "Mexico", "Peru", "Israel", "South Africa", "United States", 
"China", "Japan", "Britain", "Canada", "Euro area", "Austria", 
"Belgium", "France", "Germany", "Greece", "Italy", "Netherlands", 
"Spain", "Czech Republic", "Denmark", "Norway", "Poland", "Russia", 
"Sweden", "Switzerland", "Turkey", "Australia", "Hong Kong", 
"India", "Indonesia", "Malaysia", "Pakistan", "Philippines", 
"Singapore", "South Korea", "Taiwan", "Thailand", "Brazil", "Chile", 
"Colombia", "Mexico", "Peru", "Israel", "South Africa", "United States", 
"China", "Japan", "Britain", "Canada", "Euro area", "Austria", 
"Belgium", "France", "Germany", "Greece", "Italy", "Netherlands", 
"Spain", "Czech Republic", "Denmark", "Norway", "Poland", "Russia", 
"Sweden", "Switzerland", "Turkey", "Australia", "Hong Kong", 
"India", "Indonesia", "Malaysia", "Pakistan", "Philippines", 
"Singapore", "South Korea", "Taiwan", "Thailand", "Brazil", "Chile", 
"Colombia", "Mexico", "Peru", "Israel", "South Africa", "United States", 
"China", "Japan", "Britain", "Canada", "Euro area", "Austria", 
"Belgium", "France", "Germany", "Greece", "Italy", "Netherlands", 
"Spain", "Czech Republic", "Denmark", "Norway", "Poland", "Russia", 
"Sweden", "Switzerland", "Turkey", "Australia", "Hong Kong", 
"India", "Indonesia", "Malaysia", "Pakistan", "Philippines", 
"Singapore", "South Korea", "Taiwan", "Thailand", "Brazil", "Chile", 
"Colombia", "Mexico", "Peru", "Israel", "South Africa"), interest.rates = c(2.3, 
3, 0, 1.2, 1.9, 0.2, 0.5, 0.6, 0.5, 0.2, 3.7, 2.8, 0.2, 1.2, 
1.9, 0.3, 1.7, 2.9, 8.5, 0.3, -0.3, 14.9, 2.1, 1.8, 7.7, 7.8, 
3.9, 13.1, 6.4, 2.2, 2, 0.8, 2.2, 7.1, 4.1, 6.6, 8.2, 5.6, 2, 
8.7, 1, 2.5, 0, 0.5, 1, -0.6, -0.4, -0.3, -0.2, -0.6, 1.2, 1, 
-0.5, 0.3, 1.2, -0.6, 1.1, 1.7, 6.1, -0.3, -0.8, 11.3, 0.7, 0.9, 
6.2, 6.5, 2.8, 11, 4.2, 1.4, 1.3, 0.5, 0.8, 3.8, 3.4, 5.5, 6.3, 
3.9, 0.4, 8.9, 1.4, 3.1, 0, 0.8, 1.3, -0.3, -0.1, -0.1, -0.1, 
-0.3, 1, 0.7, -0.4, 0.3, 1.7, -0.2, 1.4, 1.5, 6.9, 0.4, -0.3, 
12.9, 1.7, 1.3, 6.2, 6.5, 3.1, 10.2, 4, 1.4, 2, 0.4, 1.6, 8.3, 
2.9, 5.5, 5.7, 4.3, 1.1, 9, 1.9, 2.6, 0, 1.5, 1.8, 0, 0.4, 0.4, 
0.6, 0, 2.4, 1.6, -0.2, 1.1, 3, 0.3, 1.4, 4.1, 12.5, 0.4, 0.1, 
23.1, 2.1, 1.7, 6.8, 6.6, 3.7, 11, 5.3, 1.8, 2.6, 0.7, 2, 11.3, 
5.7, 9.4, 8, 6.2, 1.9, 9.6, 4, 2.7, 0, 3.8, 3.4, 2.7, 3.4, 3.3, 
3, 2.7, 4.5, 4.6, 3, 3.6, 5, 3, 1.4, 6.6, 10.8, 2.7, 1.5, 10.3, 
3.8, 3.9, 7.4, 6.8, 3.9, 15.6, 6.4, 3.3, 3.8, 1.2, 2.7, 13.5, 
5.8, 13.1, 9.3, 8.1, 4, 10.1), inflation = c(2.2, 2.9, 1.1, 1.8, 
1.8, 1.4, 1.8, 2.2, 1.2, 1.4, 1.3, 0.9, 2.6, 1.2, 2.5, 1.1, 2.6, 
2, 4.9, 1.7, 0.5, 16.1, 1.7, 2.3, 3.6, 3.1, 0.6, 8.4, 3.6, 0.5, 
1, 0.3, 0.9, 4, 2.4, 3.4, 4.2, 2.2, 1, 5.1, 0.7, 3, -0.1, 1, 
0.5, 0.3, 0.7, 0.5, 0.4, 0.8, -0.4, -0.2, -0.9, -0.3, 2.4, 0.4, 
0.2, 3, 4.2, 0.5, -1, 11.2, 1.6, 1.4, 3.4, 1.3, 0, 7.4, 1.6, 
-0.2, 0.5, -0.8, 0.2, 2.5, 3.2, 1.9, 2.6, 1.7, -1, 3.6, 3.1, 
1.6, -0.2, 3, 2.2, 1.7, 2.2, 1.5, 1.4, 2.5, 0, 1, 2.2, 1.5, 2.6, 
0.7, 2.9, 4.1, 5.5, 1.8, 0.3, 14.5, 2.1, 1.6, 5.2, 2.5, 2.5, 
9, 2.4, 1.8, 1.9, 1.6, 2.1, 6.8, 3.6, 3, 4.5, 2.6, 1.5, 4, 7.8, 
2.1, 2.2, 7.2, 6.2, 7.1, 7, 9.2, 5.5, 7.7, 7, 6.5, 10.4, 7.2, 
11.9, 6.9, 4.8, 10.1, 21, 5.1, 2.5, 62.2, 5, 4.1, 7.3, 5.3, 3, 
16.1, 4.7, 6, 4.4, 3.8, 5.7, 10.4, 10.2, 9.8, 7.6, 7.1, 4.2, 
6, 4, 2.2, 1.9, 5.9, 3.6, 6, 6.6, 6.1, 5, 6.8, 3.9, 6.8, 7.1, 
4.3, 9.9, 5, 4.6, 12.6, 7.3, 5.6, 2.2, 40.8, 3.8, 2.3, 5.3, 3.9, 
2.3, 9.9, 5.7, 3.1, 2.8, 1.6, 2.2, 4.8, 7.5, 9.7, 5.9, 6.9, 3.4, 
5.1)), class = "data.frame", row.names = c(NA, -200L))
r regression causality
1个回答
1
投票

Package

lmtest
使用命令
grangertest
实现 Granger 测试。

当您拥有面板数据时,您可能对格兰杰检验的面板版本感兴趣。包

plm
使用
pgrangertest
实施 Dumitrescu/Hurlin (2012) 小组 Granger 测试。

请参阅下面的示例。但是,对于面板格兰杰测试,您的数据太短,因此我在帮助页面上显示了另一个示例

?pgrangertest

library(lmtest)
grangertest(interest.rates ~ inflation, data = data)
#> Granger causality test
#> 
#> Model 1: interest.rates ~ Lags(interest.rates, 1:1) + Lags(inflation, 1:1)
#> Model 2: interest.rates ~ Lags(interest.rates, 1:1)
#>   Res.Df Df     F Pr(>F)
#> 1    196                
#> 2    197 -1 2.187 0.1408

## panel version: data is not sufficient, needs more time periods per individual
library(plm)
pdata <- pdata.frame(data, index=c("country", "year"), drop.index = TRUE)
pgrangertest(interest.rates ~ inflation, data = pdata)
#> Error in pgrangertest(interest.rates ~ inflation, data = pdata):
#> Condition for test = "Ztilde" not met for all individuals: 
#> length of time series must be larger than 5+3*order (>5+3*1=8)

# inspect how many oberservations we have for the 40 countries: 5 for each
pdim(pdata)
Balanced Panel: n = 40, T = 5, N = 200

# Example of with suffiently long panel data
data("Grunfeld", package = "plm")
pgrangertest(inv ~ value, data = Grunfeld)
#> 
#>  Panel Granger (Non-)Causality Test (Dumitrescu/Hurlin (2012))
#> 
#> data:  inv ~ value
#> Ztilde = 3.2896, p-value = 0.001003
#> alternative hypothesis: Granger causality for at least one individual
© www.soinside.com 2019 - 2024. All rights reserved.