gpt4 book ai didi

r - 样本回归,x = 月,巨大的带宽

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

我有两个向量,xy .
x是一个向量,其中每个条目代表几个月内的一个月,所以我有(假设)10 年的数据,然后 length(x) = 120等等。
(我已经使用了“posix.ct”命令,所以从这个意义上说它们真的是“月”,但我不能把 x 作为一个数值向量,比如 c(1:n) 或其他东西,因为我已经知道哪个月份和c(1:n) 的某个元素对应于哪一年?即如果 x = c(1:n) ,我知道 x[13] 是第二年的二月,依此类推。)

y 是一个向量,其中每个元素是某个月份对特定变量的观察。
所以观察到的数据是这样分组的(一月,0.123),(二月,2.125)等等。
这几个月我有两个向量;

x1 = seq(as.POSIXct("YYYY-MM-DD", tz="GMT"),
as.POSIXct("YYYY-MM-DD", tz="GMT"),
by="month")
x2 = c(1:length(x1))

我想要做的是运行 ksmooth:
plot(x1,y)
smooth = ksmooth(x2,y,"normal")
lines(smooth)

我在 plot() 命令中使用 x1 的原因是我不知道如何及时获取 x 轴。

当我没有指定任何东西时,R 应该自动找到一个合适的平滑参数。结果是 ksmooth$y 等于输入向量 y!此外,图中会生成一个垂直条。如果我更换 x2来自 x1在上面的代码中, ksmooth$y对于除第一个和最后一个值之外的所有值都是 NA,它们等于输入 y 的值.

所以我尝试了一些带宽: h = 0.1 :现在 smooth$y = y ,和以前一样。生成一个竖线(它与我在 lines() 命令中指定的颜色相同,所以它必须与 ksmooth 命令有关。) h = 10 : 为 smooth$y 获得一些非奇怪的结果,但是,会像以前一样生成一个垂直条。

然后,我尝试了非常大带宽的疯狂想法; h = 1e+06 :当我使用 x1 时,这没有产生任何结果和 x2如上面的代码。当我改变 x2x1但是,我得到了一些不错的结果。对于 h = 1e+09 (这是巨大的!!)我得到了一个非常好的结果。 (我得到了一条拟合数据的曲线,看起来不错)
但是 h = 1e+09 ,这样合理吗?在我看过的所有例子中,h 是介于 0.1 和 10 之间的东西,给予或接受。听说过一些经验法则:h 应该等于 n^(-1/5),其中 n 是数据点的数量。

最佳答案

我认为您缺少的一件事是,当您没有指定任何内容时,R 找不到合适的平滑参数,它只使用 0.5 的带宽,这在您的情况下完全没用。

您可能遗漏的另一件事是 ksmooth bandwidth参数以 x 表示.当ksmooth需要一个 x Date 的值,它将其转换为数字,即秒数。因此,您的带宽将以秒为单位进行测量,这是一个不受欢迎的结果。当ksmooth需要一个 x月的值,它会默认为0.5个月的带宽,也是不可取的。

您要做的是为 x 指定一个合理的带宽。你正在使用的。下面是一个例子:

x1 = seq(as.POSIXct("2000-01-01", tz="GMT"),
as.POSIXct("2010-12-31", tz="GMT"),
by="month")
x2 = c(1:length(x1))
set.seed(1)
y = runif(length(x1))

plot(x1,y,type='l')
smooth = ksmooth(x2,y,"normal")
lines(x1,smooth$y,col='blue',lwd=2)
lines(x1,ksmooth(x2,y,'normal',bandwidth=2)$y,col='red',lwd=2)
lines(x1,ksmooth(x2,y,'normal',bandwidth=10)$y,col='green',lwd=2)
lines(x1,ksmooth(x2,y,'normal',bandwidth=20)$y,col='orange',lwd=2)

Smoothed random time series

关于r - 样本回归,x = 月,巨大的带宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12874928/

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