R ggplot在ggplot上点的顶部绘制2d概率密度函数

R ggplot在ggplot上点的顶部绘制2d概率密度函数,r,ggplot2,R,Ggplot2,我举了以下例子: require(mvtnorm) require(ggplot2) set.seed(1234) xx <- data.frame(rmvt(100, df = c(13, 13))) ggplot(data = xx, aes(x = X1, y= X2)) + geom_point() + geom_density2d() require(mvtnorm) 需要(ggplot2) 种子集(1234) 这不是一个容易回答的问题:因为需要计算轮廓并使用椭圆包绘制椭圆

我举了以下例子:

require(mvtnorm)
require(ggplot2)
set.seed(1234)
xx <- data.frame(rmvt(100, df = c(13, 13)))
ggplot(data = xx,  aes(x = X1, y= X2)) + geom_point() + geom_density2d()
require(mvtnorm)
需要(ggplot2)
种子集(1234)

这不是一个容易回答的问题:因为需要计算轮廓并使用椭圆包绘制椭圆

使用椭圆t-密度来更好地说明绘图

nu <- 5  ## this is the degrees of freedom of the multivariate t. 

library(mvtnorm) 
library(ggplot2)

sig <- matrix(c(1, 0.5, 0.5, 1), ncol = 2)  ## this is the sigma parameter for the multivariate t

xx <- data.frame( rmvt(n = 100, df = c(nu, nu), sigma = sig)) ## generating the original sample

rtsq <- rowSums(x = matrix(rt(n = 2e6, df = nu)^2, ncol = 2)) ## generating the sample for the ellipse-quantiles. Note that this is a cumbersome calculation because it is the sum of two independent t-squared random variables with the same degrees of freedom so I am using simulation to get the quantiles. This is the sample from which I will create the quantiles.

g <- ggplot( data = xx
         ,  aes( x = X1
              , y = X2
                )
           ) + geom_point(colour = "red", size = 2)      ## initial setup

library(ellipse)

for (i in seq(from = 0.01, to = 0.99, length.out = 20)) {
    el.df <- data.frame(ellipse(x = sig, t = sqrt(quantile(rtsq, probs = i))))    ## create the data for the given quantile of the ellipse.
    names(el.df) <- c("x", "y")
    g <- g + geom_polygon(data=el.df, aes(x=x, y=y), fill = NA, linetype=1, colour = "blue") ## plot the ellipse
}

g + theme_bw() 

nu这不是一个容易回答的问题:因为需要计算轮廓并使用椭圆包绘制椭圆

使用椭圆t-密度来更好地说明绘图

nu <- 5  ## this is the degrees of freedom of the multivariate t. 

library(mvtnorm) 
library(ggplot2)

sig <- matrix(c(1, 0.5, 0.5, 1), ncol = 2)  ## this is the sigma parameter for the multivariate t

xx <- data.frame( rmvt(n = 100, df = c(nu, nu), sigma = sig)) ## generating the original sample

rtsq <- rowSums(x = matrix(rt(n = 2e6, df = nu)^2, ncol = 2)) ## generating the sample for the ellipse-quantiles. Note that this is a cumbersome calculation because it is the sum of two independent t-squared random variables with the same degrees of freedom so I am using simulation to get the quantiles. This is the sample from which I will create the quantiles.

g <- ggplot( data = xx
         ,  aes( x = X1
              , y = X2
                )
           ) + geom_point(colour = "red", size = 2)      ## initial setup

library(ellipse)

for (i in seq(from = 0.01, to = 0.99, length.out = 20)) {
    el.df <- data.frame(ellipse(x = sig, t = sqrt(quantile(rtsq, probs = i))))    ## create the data for the given quantile of the ellipse.
    names(el.df) <- c("x", "y")
    g <- g + geom_polygon(data=el.df, aes(x=x, y=y), fill = NA, linetype=1, colour = "blue") ## plot the ellipse
}

g + theme_bw() 
nu