Каковы R-эквиваленты функций Stata qofd (), mofd () и wofd ()? - PullRequest
0 голосов
/ 17 июня 2019

Каковы R эквиваленты функций Stata qofd(), mofd() и wofd()?

Я не ищу функции R , которая преобразует даты в строки (например, преобразование 10/13/2016 в 2006q4 с использованием qofd()).

Мне нужны функции, которые преобразуют дату в формат с плавающей запятой, который может быть использован напрямую (без преобразования в другие форматы) в регрессии и может отображаться, например, как 2006q4, когда мы смотрим на данные.

1 Ответ

2 голосов
/ 17 июня 2019

Дата

Если d относится к классу Date, то as.numeric(d) дает число дней с начала эпохи UNIX (1 января 1970 г.).Если в регрессии используется переменная класса Date, то есть числовой вектор, используемый, как показано в этом примере.

y <- (1:10)^2
x <- as.Date("2000-01-01") + 0:9
xx <- as.numeric(x)
identical(unname(coef(lm(y ~ x))), unname(coef(lm(y ~ xx))))
## [1] TRUE

yearmon и yearqtr

В пакете zoo есть yearmon иyearqtr классы, которые отображаются, как показано ниже, но представлены внутри как год + дробь.Для yearmon доля равна 0 для января, 1/12 для февраля, ..., 11/12 для декабря. Для yearqtr доля равна 0 для Q1, 1/4 для Q2, 2/4 для Q3 и3/4 для Q4.

Вот как объекты этих классов отображаются по умолчанию.format может использоваться для получения других форматов.Смотрите ?yearmon в пакете zoo.

library(zoo)

as.yearmon("2000-01")
## [1] "Jan 2000"

as.yearqtr("2000-1")
## [1] "2000 Q1"

Здесь мы показываем, что регрессия к переменной yearmon такая же, как регрессия для ее числового представления.Аналогичный пример можно привести для yearqtr.y сверху.

ym <- as.yearmon(2000) + 0:9/12
num <- as.numeric(ym)
identical(unname(coef(lm(y ~ ym))), unname(coef(lm(y ~ num))))
## [1] TRUE

недель

Функция одной строки nextfri, определенная в этой виньетке зоопарка:

https://cran.r -проект.org / web / packages / zoo / vignettes / zoo-quickref.pdf

может использоваться для стандартизации дат только по пятницам.Замените 5 в этой формуле другим числом от 0 до 6, чтобы получить этот день недели.

library(zoo)

yy <- (1:365)^2
ww <- nextfri(as.Date("2019-01-01") + 0:364)

# regress yy on next Friday
lm(yy ~ ww)
...