从 R 中的核密度估计中获取值

Posted

技术标签:

【中文标题】从 R 中的核密度估计中获取值【英文标题】:Getting values from kernel density estimation in R 【发布时间】:2013-01-11 04:13:39 【问题描述】:

我正在尝试获取 R 中股票价格对数的密度估计值。我知道我可以使用 plot(density(x)) 绘制它。但是,我实际上想要函数的值。

我正在尝试实现核密度估计公式。到目前为止,这是我所拥有的:

a <- read.csv("boi_new.csv", header=FALSE)
S = a[,3] # takes column of increments in stock prices
dS=S[!is.na(S)] # omits first empty field

N = length(dS)                  # Sample size
rseed = 0                       # Random seed
x = rep(c(1:5),N/5)             # Inputted data

set.seed(rseed)   # Sets random seed for reproducibility

QL <- function(dS)
    h = density(dS)$bandwidth
    r = log(dS^2)
    f = 0*x
    for(i in 1:N)
        f[i] = 1/(N*h) * sum(dnorm((x-r[i])/h))
    
    return(f)


QL(dS)

任何帮助将不胜感激。已经在这几天了!

【问题讨论】:

@Dason 我试图找到密度函数的值。 【参考方案1】:

您可以直接从density 函数中提取值:

x = rnorm(100)
d = density(x, from=-5, to = 5, n = 1000)
d$x
d$y

或者,如果您真的想编写自己的内核密度函数,这里有一些代码可以帮助您入门:

    设置点zx范围:

    z = c(-2, -1, 2)
    x = seq(-5, 5, 0.01)
    

    现在我们将点添加到图表中

    plot(0, 0, xlim=c(-5, 5), ylim=c(-0.02, 0.8), 
         pch=NA, ylab="", xlab="z")
    for(i in 1:length(z)) 
       points(z[i], 0, pch="X", col=2)
    
     abline(h=0)
    

    在每个点周围放置法线密度:

    ## Now we combine the kernels,
    x_total = numeric(length(x))
    for(i in 1:length(x_total)) 
      for(j in 1:length(z)) 
        x_total[i] = x_total[i] + 
          dnorm(x[i], z[j], sd=1)
      
    
    

    并将曲线添加到绘图中:

    lines(x, x_total, col=4, lty=2)
    

    最后,计算完整的估计值:

    ## Just as a histogram is the sum of the boxes, 
    ## the kernel density estimate is just the sum of the bumps. 
    ## All that's left to do, is ensure that the estimate has the
    ## correct area, i.e. in this case we divide by $n=3$:
    
    plot(x, x_total/3, 
           xlim=c(-5, 5), ylim=c(-0.02, 0.8), 
           ylab="", xlab="z", type="l")
    abline(h=0)
    

    这对应

    density(z, adjust=1, bw=1)
    

上面的图给出:

【讨论】:

非常感谢!你是救生员。这几天一直盯着这个。感激不尽!

以上是关于从 R 中的核密度估计中获取值的主要内容,如果未能解决你的问题,请参考以下文章

如何获得特定点的核密度估计值?

图像的核密度估计

数据的核密度估计及其可视化:Python实现

数据的核密度估计及其可视化:Python实现

数据的核密度估计及其可视化:Python实现

什么是gis核密度计算