簡體   English   中英

kernel R 中的密度估計器

[英]kernel density estimator in R

我正在使用以下數據的最后一列,數據

我正在嘗試將 kernel 密度估計器的想法應用於此數據集,該數據集由核密度的方程式設置

其中 k 是一些核,通常是正態分布,但不一定。h 是帶寬,n 是數據集的長度,X_i 是每個數據點,x 是擬合值。 所以使用這個等式我有以下代碼,

AstroData=read.table(paste0("http://www.stat.cmu.edu/%7Elarry",
                   "/all-of-nonpar/=data/galaxy.dat"),
            header=FALSE)
x=AstroData$V3
xsorted=sort(x)
x_i=xsorted[1:1266]
hist(x_i, nclass=308)
n=length(x_i)
h1=.002
t=seq(min(x_i),max(x_i),0.01)
M=length(t)
fhat1=rep(0,M)
for (i in 1:M){
 fhat1[i]=sum(dnorm((t[i]-x_i)/h1))/(n*h1)}
lines(t, fhat1, lwd=2, col="red")

產生以下 plot, 結果圖

這實際上接近我想要的,因為一旦我刪除直方圖,最終結果應該顯示為這樣, 最終情節

如果您注意到它經過了更精細的調整,並且應該代表密度的紅線相當粗糙並且沒有縮放得那么高。 最后看到的plot是使用R中的密度function運行的,

plot(density(x=y, bw=.002))

這是我想在不使用任何額外包的情況下達到的目的。

謝謝

在與我的室友交談后,他給了我提前 go 的想法,並減少 t 值 (x) 的間隔。 在做一些事情時,我將它從 0.01 更改為 0.001。 所以這個 plot 的最終代碼如下所示,

AstroData=read.table(paste0("http://www.stat.cmu.edu/%7Elarry",
               "/all-of-nonpar/=data/galaxy.dat"),
        header=FALSE)
x=AstroData$V3
xsorted=sort(x)
x_i=xsorted[1:1266]
hist(x_i, nclass=308)
n=length(x_i)
h1=.002
t=seq(min(x_i),max(x_i),0.001)
M=length(t)
fhat1=rep(0,M)
for (i in 1:M){
fhat1[i]=sum(dnorm((t[i]-x_i)/h1))/(n*h1)}
lines(t, fhat1, lwd=2, col="blue")

換句話說,它給出了以下 plot,這是我想要的,

正確的情節

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM