gpt4 book ai didi

R:在动物园矩阵对象上滚动应用 lm 回归

转载 作者:行者123 更新时间:2023-12-04 04:48:21 28 4
gpt4 key购买 nike

我想在单个动物园对象中的多对数据系列上使用 lm 执行滚动回归。

虽然我能够通过以下代码对动物园对象中的一对数据系列执行滚动回归:

FunLm <- function(x,Param,Days) coef(lm(AAA ~ Z, data = as.data.frame(x), weights=Param*(seq(Days,1,by=-1))))
DataLmCoef <- rollapplyr(Data, Days, FunLm, Param, Days, by.column = FALSE)

使用这种结构的动物园:
                Z   AAA
2012-07-01 1 853
2012-07-04 2 864
2012-07-05 3 865
2012-07-06 4 873
2012-07-07 5 870
2012-07-08 6 874

我的问题是,如果我有以下动物园对象:
                Z   AAA BBB CCC
2012-07-01 1 853 123 65
2012-07-04 2 864 124 62
2012-07-05 3 865 126 63
2012-07-06 4 873 120 66
2012-07-07 5 870 121 68
2012-07-08 6 874 123 69

在不使用循环的情况下,如何在 Z~AAA、Z~BBB、Z~CCC、Z~DDD.... 上执行类似的滚动回归,并获得两个动物园矩阵对象,一个存储截距,另一个存储斜率?

最佳答案

遵循 rollapply 中的示例man page

您可以在滚动功能中添加多个测试
例如

> seat <- as.zoo(log(UKDriverDeaths))
> time(seat) <- as.yearmon(time(seat))
> seat <- merge(y = seat, y1 = lag(seat, k = -1),
y12 = lag(seat, k = -12), all = FALSE)
> fm <- rollapply(seat, width = 36,
FUN = function(z)
data.frame(
test1 = t(coef(lm(y ~ y1 + y12, data = as.data.frame(z)))),
test3 = t(coef(lm(y ~ y12, data = as.data.frame(z))))
) ,
by.column = FALSE, align = "right")

结果
> head(fm)
test1..Intercept. test1.y1 test1.y12 test3..Intercept. test3.y12
דצמ 1972 0.9629793 0.15344243 0.7240740 1.530598 0.8026003
ינו 1973 1.1336058 0.13920023 0.7155899 1.570067 0.7973688
פבר 1973 0.9978077 0.14346100 0.7293183 1.440635 0.8145803
מרץ 1973 0.9879002 0.12929214 0.7442218 1.375245 0.8226257
אפר 1973 1.2281307 0.11700612 0.7250115 1.545356 0.8003661
מאי 1973 1.4483700 0.08860055 0.7245032 1.706343 0.7792279

关于R:在动物园矩阵对象上滚动应用 lm 回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17830919/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com