【发布时间】:2013-05-24 20:09:16
【问题描述】:
我想知道 R 中的 KDE 函数是如何实现的,因为我在绘图中看到了一些奇怪的东西。
dates5.csv 无非是:
day
2013-01-02
2013-03-01
即两个日期。现在我读入数据,根据 if 计算出矩形 KDE,得到下图:
data <- read.csv("dates5.csv", header=T)
days <- data$day
daysPosix <- as.POSIXct(days, tz="Europe/Zurich")
# compute density
ds <- density(as.numeric(daysPosix),
bw = 3600 * 24 * 7,
kernel = "rectangular",
cut = 3)
plot(ds, xaxt ="n", xlab="", ylab="", ylim = c(0,max(ds$y)),
main = "Temporal density (uniform kernel,
bandwidth = 7 days)")
points(x = as.numeric(daysPosix),
y=rep(0, length(daysPosix)),
pch="|",
col="#00000080")
times.seq <- seq(daysPosix[1],
daysPosix[length(daysPosix)],
by = "weeks")
labels = strftime(times.seq, "%d.%m.%y")
axis(1,times.seq,labels)
x 轴上的刻度线以 周 分隔。乍一看,情节是有道理的,两个矩形形状建立在两个点的顶部。 不过,有两件事我不明白: 为什么每个“形状”的大致范围都超过 3 周,而不是预期的 7天(因为这是带宽?)?为什么这些形状的两边都有陡峭的“悬崖”而不是垂直的?
【问题讨论】:
-
文档指出:
The kernels are scaled such that this is the standard deviation of the smoothing kernel.所以bw = 3600*24*7/(2*qnorm(0.975))似乎给出了一周宽的形状。 -
您能否再解释一下,也许在我会接受的答案中?
-
要使形状有垂直下降,增加
n,即n=2^15