Эволюция коэффициентов линейной регрессии во времени - PullRequest
1 голос
/ 13 мая 2011

Я хотел бы наблюдать эволюцию коэффициентов линейной регрессии во времени. Чтобы быть более точным, давайте установим временной интервал в 2 года, где линейная регрессия всегда будет использовать набор данных с диапазоном в 1 год. После первой регрессии мы продвигаемся на одну неделю дальше (то есть мы добавляем новую неделю, но одну также вычитаем с начала) и выполняем регрессию снова, пока мы достигаем конечной даты: всего будет 52 регрессии.

Моя проблема в том, что в наборе данных есть некоторые праздники, и мы не можем просто добавить 7 дней, как можно легко предположить. Я хотел бы иметь некоторую функцию-обертку, которая бы выполняла вышеупомянутые функции для многих других функций из разных пакетов, например, forecast.lm() из пакета forecast или любой функции, о которой можно подумать: цель в каждом случае - найти Эволюция параметров линейной регрессии еженедельно.

1 Ответ

1 голос
/ 20 мая 2011

Я думаю, что вы могли бы получить больше ответов, если вы отредактируете / поделите свой вопрос в четкой форме.(1) как мне найти каникулы (непонятно, как вы определяете каникулы)?(2) как мне нарезать набор данных соответственно?(3) как мне запустить линейную регрессию в каждом чанке?

(1) найти праздники: не могу здесь помочь, так как я не знаю, как они определены / закодированы в вашем наборе данных,library(sos); findFn("holiday") находит некоторые опции

(2) разбивает набор данных по интервалам между выходными и выходными.В приведенном ниже примере предполагается, что выходные дни кодируются как 1, а нерабочие дни - как ноль.

(3) запускают линейную регрессию для каждого куска и извлекают коэффициенты.

d <- data.frame(holiday=c(0,0,0,1,1,0,0,0,0,1,0,0,0,0),
     x=runif(14),y=runif(14))
per <- cumsum(c(1,diff(d$holiday)==-1))  ## maybe use rle() instead
dd <- with(d,split(subset(d,!holiday),per[!holiday]))
t(sapply(lapply(dd,lm,formula=y~x),coef))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...