【问题标题】:Series Problem in CIPS Panel cointegration testCIPS面板协整检验中的级数问题
【发布时间】:2021-04-05 05:55:57
【问题描述】:

我很难估计 R 中的 CIPS 面板协整测试。我加载 plm 包并将面板数据设为 pdata 框架

bcc_panel3 <- pdata.frame(bcc_panel3,index = c("date","country"))

dataset

数据集包含 3 个变量。 我使用的 R 命令:

cipstest(bcc_panel3$BCC_con, lags = 4, type = c("trend"), model=c("cmg"))

我尝试了它的变体,但总是出现相同的消息。

*Error in difft.pseries(x = x, lag = lag, ...) :  diff is only relevant for numeric or logical series*

有什么问题?

【问题讨论】:

  • 变量的类是什么?您可以通过例如lapply(bcc_panel3, class) 进行检查。
  • $date [1] "character" $BCC_con [1] "character" $country [1] "factor" $time [1] "factor"
  • 我使用 'is.numeric' 和 'is.double' 将 BCC_con 强制转换为数值,但失败了
  • 显然,对字符进行数值计算是行不通的。也许更改您的数据导入程序,使其不会为该变量生成字符,而是直接生成数字。
  • 它最初是数字,但 p.data.frame 命令创建字符值。

标签: r panel-data plm


【解决方案1】:

正如您在评论中提到的,plm::pdata.frame 将您的数字变为非数字。在您使用pdata.frame 的方式中,它会这样做并将您的数字变成一个因素。请阅读pdata.frame 的文档。您感兴趣的变量位于数据框的第二列。如果您没有为pdata.frame 指定index 参数,它将假定前两列是索引并执行它应该做的事情:将前两列转换为因子。鉴于您不希望此变量成为索引,请像这样使用pdata.frame

pdata.frame(xy_combine, index = c("country", "date"))

(基于您在问题的 cmets 中提供的数据和脚本。)

给定您的数据,cipstest 将失败,因为您的(测试)数据中的观察单元太少(错误消息并没有提供真正的信息)。描述该测试的论文 (Pesaran (2007)) 给出了 10 个人(观察单位)的列表 p 值。您的数据集中有 2 个人。

我在下面给出了我使用的完整脚本(我将你的脚本剥离到相关部分):

library(readxl) #library for reading excel files
library("plm")
#import data
test <- read_excel("C:/Users/xxx/Downloads/test.xlsx") # adjust to your path

#create country column with 60 obs each Austria and Belgium
country <- rep(c("Austria","Belgium"), each=60)

#stack xy columns into a single column
attach(test)
df1 <- data.frame(a=x, b=y)
xy <- data.frame(c(df1[,"a"],df1[,"b"]))

#create panel data
date <-test$date
xy_combine <- cbind(date, xy, country)
xy_panel <- pdata.frame(xy_combine, index = c("country", "date")) # specify index

lapply(xy_panel, class) # factor, numeric, factor

#rename column 2 in xy_panel1
colnames(xy_panel)[2] <- "xy_con"

#order data by country
country_order <- order(xy_panel$country)
xy_panel1<- xy_panel[country_order,]

lapply(xy_panel1, class) # factor, numeric, factor


cipstest(xy_panel1$xy_con,lag=2, type=c("none")) # errors. Likely to few individuals in data set.

【讨论】:

  • pdata.frame 命令中的索引无法解决问题,出现以下错误消息:错误在 difft.pseries(x = x, lag = lag, ...) : diff is仅与数字或逻辑系列相关
  • 正在检查的系列仍然是字符
  • 请查看我的完整脚本编辑,我使用的是 plm 版本 2.2-5(目前在 CRAN 上)。
  • 我也在使用 2.2-5 版本的 plm。现在的错误消息不同了 Error in approx(nintv, cvals[nintl:ninth, tintl, i], n = max(nintv) - : need at least two non-NA values to interpolate是它的原因吗?
  • 看我的回答...我在那儿放了个便条
猜你喜欢
  • 2012-08-24
  • 2018-12-16
  • 1970-01-01
  • 1970-01-01
  • 2021-02-10
  • 2013-08-07
  • 2023-03-17
  • 2021-02-18
  • 2016-10-01
相关资源
最近更新 更多