gpt4 book ai didi

r - 核密度导数

转载 作者:行者123 更新时间:2023-12-01 09:33:19 25 4
gpt4 key购买 nike

我正在使用密度 {stats} 来构造变量向量的内核“高斯”密度。如果我使用以下示例数据集:

    x <- rlogis(1475, location=0, scale=1)  # x is a vector of values - taken from a rlogis just for the purpose of explanation
d<- density(x=x, kernel="gaussian")

有没有什么方法可以在每个 n=1475 点上得到这个密度 d 的一阶导数

最佳答案

编辑#2:

遵循 Greg Snow 的出色建议,使用 derivative of a Gaussian 的解析表达式,以及我们在他的帖子之后的对话,这将为您提供每个点的确切斜率:

s <- d$bw; 
slope2 <- sapply(x, function(X) {mean(dnorm(x - X, mean = 0, sd = s) * (x - X))})
## And then, to compare to the method below, plot the results against one another
plot(slope2 ~ slope)

编辑:

好的,我刚刚重读了你的问题,发现你想要输入向量 x 中每个点的斜率。以下是您可能近似的一种方法:

slope <- (diff(d$y)/diff(d$x))[findInterval(x, d$x)]

可能的进一步改进是在其区间内找到该点的位置,然后将其斜率计算为当前区间的斜率与其右侧或左侧的区间的加权平均值。


我会通过平均每个点的右侧和左侧的线段的斜率来解决这个问题。 (需要特别注意第一个点和最后一个点,它们的左右分别没有线段。)

dy <- diff(d$y)
dx <- diff(d$x)[1] ## Works b/c density() returns points at equal x-intervals
((c(dy, tail(dy, 1)) + c(head(dy, 1), dy))/2)/dx

关于r - 核密度导数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12568715/

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