Я пытаюсь вычислить следующий для набора данных, чтобы узнать некоторый анализ временных рядов, а затем блокировать загрузки ремня стандартных ошибок для физических лиц:серии Задержки и корреляции (автокорреляция)
Вот набор данных:
https://www.dropbox.com/s/z066lnxetz9uaf6/health.csv?dl=0
А вот код, который я сделал для Cor:
#Check for duplicates
health.d <- health.d[!duplicated(health.d),]
health.d$lnincome <- log(health.d$Income + 1)
health.d <- health.d[(health.d$sex == 1 & health.d$married == 0),]
#First Difference for each individual (%>% , group_by and mutate are functions in dplyr package)
health.d <- health.d %>%
group_by(ID) %>%
mutate(Dy = lnincome - lag(lnincome, 1))
#Remove NA from Dy
health.d <- health.d[!is.na(health.d$Dy),]
#Autocorretion
health.d <- arrange(health.d, ID, year)
health.d <- transform(health.d, time = as.numeric(interaction(ID, drop=TRUE)))
health.d$lag1DY <- health.d$lnincome - lag(health.d$lnincome, 1)
health.d$lagDY_s1 <- lag(health.d$lnincome,1) - lag(health.d$lnincome, 2)
health.d$lagDY_s2 <- lag(health.d$lnincome,2) - lag(health.d$lnincome, 3)
health.d$lagDY_s3 <- lag(health.d$lnincome,3) - lag(health.d$lnincome, 4)
health.d$lagDY_s4 <- lag(health.d$lnincome,4) - lag(health.d$lnincome, 5)
#Remove NA from lag
health.d <- health.d[!is.na(health.d$lag1DY),]
health.d <- health.d[!is.na(health.d$lagDY_s1),]
health.d <- health.d[!is.na(health.d$lagDY_s2),]
health.d <- health.d[!is.na(health.d$lagDY_s3),]
health.d <- health.d[!is.na(health.d$lagDY_s4),]
cor(health.d$lag1DY, health.d$lagDY_s1)
cor(health.d$lag1DY, health.d$lagDY_s2)
cor(health.d$lag1DY, health.d$lagDY_s3)
cor(health.d$lag1DY, health.d$lagDY_s4)
Результатов:
> cor(health.d$lag1DY, health.d$lagDY_s1)
[1] -0.05593212
> cor(health.d$lag1DY, health.d$lagDY_s2)
[1] -0.1033625
> cor(health.d$lag1DY, health.d$lagDY_s3)
[1] -0.0804236
> cor(health.d$lag1DY, health.d$lagDY_s4)
[1] -0.1235624
Они, кажется, не так, как должна быть высокой корреляцией между периодами времени из-за доход, но я не могу понять, что я сделал неправильно.
Редактировать: Я обновил свой код, чтобы включить текущие результаты, которые я достиг. Они не кажутся правильными, но (1) я не знаю правильных чисел, и (2) я не знаю, где мой код ошибочен. Я публикую свои текущие результаты в надежде, что кто-то может исправить меня :)
Любая помощь с блочной загрузкой стандартных ошибок?
Заранее спасибо.
Я не могу воспроизвести ваши результаты 'cor' из чистого сеанса R, потому что' lag.default' фактически не изменяет ваши данные. Он просто добавляет атрибут 'tsp' и меняет его. Таким образом, все результаты 'cor' - это' NA', потому что стандартное отклонение равно нулю. У вас есть прилагаемый пакет, который маскирует 'lag'? –
@Joshua Ulrich извините ..... смотрите обновленный код. Я использую dplyr. Виноват. – Vedda
Я могу реплицировать результаты, если я рассчитываю лаги вручную. Это означает, что это скорее статистический вопрос, чем вопрос программирования. Я помечен для перехода на stats.stackexchange.com. –