FAQ-1032 密度散布図の検証

最終更新日:2019/12/16


密度ドットプロットは、データ密度を示す散布図で、ポイントはデータ密度でカラーマップされます。密度はカーネル密度推定を使用して計算されます。

カーネル密度推定を計算するために、Originは2Dビン近似と2D補間を利用する高速アルゴリズムを使用します。最初の2Dビン化が(x、y)ポイントで実行され、ビンカウントの行列を取得します。次に、2D高速フーリエ変換を使用して、各グリッドの密度値を計算するための離散畳み込みを実行します。密度値の4乗根は、密度スケールをカラースケールにマッピングするために計算されます。

Originは同じデータセットからRと同様の結果を生成できます。

RとOriginの結果の比較

Density Plot Origin R Comparison.png

リファレンス

データ:
1つの応答変数(y), 1つの予測変数(x)
観測数100000
生成されたデータ
データファイル: DP.csv

Originプロジェクトファイル: density_dots_validation_sample.opju

このグラフを作成するRコード

xx= read.csv("DP.csv",header=FALSE)
as.list(body(smoothScatter))
trace("smoothScatter",quote(browser()),at=19)
w<-c(0.056990976577602, 0.13442535086237)
smoothScatter(xx, nrpoints = 0,nbin=151,bandwidth=w)
#Debug and run following script
#Type "n" to enter line 19
stopifnot((nx <- length(xm)) == nrow(dens),
                  (ny <- length(ym)) == ncol(dens))
ixm <- 1L + as.integer((nx-1)*(x[,1]-xm[1])/(xm[nx]-xm[1]))
iym <- 1L + as.integer((ny-1)*(x[,2]-ym[1])/(ym[ny]-ym[1]))
z<-dens[cbind(ixm, iym)]
df<-data.frame(x=x[,1],y=x[,2],z=z)
library(ggplot2)
sp<-ggplot(df, aes(x,y,colour=z)) +  geom_point(shape=".")+ 
        theme(panel.background = element_rect(fill = 'black'),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border = element_blank())
sp
cval<-seq(0,1,length.out=6)
sp+scale_color_gradientn(values = cval,colours = rainbow(20))

キーワード:検証, Rとの比較