Серийная проблема в тесте коинтеграции CIPS Panel

У меня возникли трудности с оценкой теста коинтеграции панели CIPS в R. Я загружаю пакет plm и делаю данные панели фреймом pdata.

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

набор данных

Набор данных содержит 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*

В чем проблема?


person Idomen    schedule 28.12.2020    source источник
comment
Каков класс переменной? Вы можете проверить через, например, lapply(bcc_panel3, class).   -  person Helix123    schedule 28.12.2020
comment
$date [1] символ $BCC_con [1] символ $country [1] фактор $time [1] фактор   -  person Idomen    schedule 29.12.2020
comment
Я использовал «is.numeric» и «is.double», чтобы привести BCC_con к числовому значению, но это не удалось   -  person Idomen    schedule 29.12.2020
comment
Очевидно, что числовые вычисления над символами работать не будут. Возможно, измените процедуру импорта данных таким образом, чтобы она создавала не символ для этой переменной, а числовое значение.   -  person Helix123    schedule 29.12.2020
comment
Изначально это числовое значение, но команда p.data.frame создает символьные значения.   -  person Idomen    schedule 30.12.2020
comment
Можете ли вы показать это на воспроизводимом примере? Используете ли вы какие-либо нестандартные пакеты для импорта данных?   -  person Helix123    schedule 30.12.2020
comment
Вышеуказанные ссылки предназначены для кода и данных воспроизводственного примера.   -  person Idomen    schedule 02.01.2021


Ответы (1)


Как вы упомянули в комментарии, plm::pdata.frame превращает ваше числовое значение в нечисловое. То, как вы используете pdata.frame, делает это и превращает ваше число в фактор. Пожалуйста, прочтите документацию pdata.frame. Интересующая вас переменная находится во 2-м столбце вашего фрейма данных. Если вы не укажете аргумент index для pdata.frame, он предполагает, что первые два столбца являются индексами, и делает то, что должен делать: превращает первые два столбца в факторы. Учитывая, что вы не хотите, чтобы эта переменная была индексом, используйте pdata.frame следующим образом:

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

(На основе ваших данных и вашего сценария, предоставленного в комментариях к вопросу.)

Однако, учитывая ваши данные, cipstest потерпит неудачу, так как у вас слишком мало единиц наблюдения в ваших (тестовых) данных (сообщение об ошибке на самом деле не информативно). В документе, описывающем тест (Pesaran (2007)) приведены табличные значения p для 10 человек (единицы наблюдения). В вашем наборе данных есть 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.
person Helix123    schedule 04.01.2021
comment
Индекс в команде pdata.frame не решит проблему, появится следующее сообщение об ошибке: Ошибка в difft.pseries(x = x, lag = lag, ...): diff имеет значение только для числовых или логических рядов< /б> - person Idomen; 05.01.2021
comment
Исследуемый сериал остается персонажем - person Idomen; 05.01.2021
comment
Пожалуйста, смотрите мое редактирование с полным скриптом, я использовал plm версии 2.2-5 (как сейчас на CRAN). - person Helix123; 05.01.2021
comment
Я также использую версию 2.2-5 plm. Сообщение об ошибке теперь другое Ошибка в приблизительно(nintv, cvals[nintl:девятый, tintl, i], n = max(nintv) -: для интерполяции требуется как минимум два значения, отличные от NA Что может быть причиной этого? - person Idomen; 07.01.2021
comment
Смотрите мой ответ ... Я положил туда записку - person Helix123; 07.01.2021
comment
Я увеличил ширину данных. теперь переменная xy_con имеет размерность 240x1. Выходит такое же сообщение об ошибке. Является ли проблема длиной исследуемого ряда? - person Idomen; 08.01.2021
comment
Мне непонятно, что вы имеете в виду под шириной и длиной. Если вы не доведете количество сущностей в отдельном измерении (страны в вашем случае) хотя бы до 10, вы увидите ту же ошибку. Это скорее вопрос статистики. Ответ на вопрос по программированию решен. - person Helix123; 08.01.2021
comment
Под шириной я подразумеваю единицы поперечного сечения, а под длиной количество периодов времени. - person Idomen; 09.01.2021
comment
Так что широта в ваших словах. Кстати: размер времени на единицу поперечного сечения также имеет минимум. - person Helix123; 10.01.2021
comment
Каков предел размерности времени для R ? - person Idomen; 11.01.2021
comment
Пожалуйста, ознакомьтесь с документом для теста, процитированного в моем ответе. - person Helix123; 30.01.2021