【问题标题】:Countor plot of bivariate normal functions双变量正态函数的等高线图
【发布时间】:2021-04-23 07:00:03
【问题描述】:

有人能解释一下为什么这样的函数没有像我预期的那样产生一个计数图吗? 我有一个二元正态函数:

  • 表示 = c(5,1)
  • var_cov = 矩阵(c(2,1,1,1),2)

我想绘制它的等高线图;我能够达到结果,但我想问一下为什么在一种情况下我没有得到预期的结果。

工作示例:

library(MASS)
library(ggplot2)

N <- 100 
set.seed(123)

var_cov_matrix <- matrix(c(2,1,1,1),2)
mean <- c(5,1)

bivariate_points <- expand.grid(s.1 = seq(-25, 25, length.out=N), s.2 = seq(-25, 25, length.out=N))
z <- mvtnorm::dmvnorm(bivariate_points, mean = mean, sigma = var_cov_matrix)

data  <- cbind(bivariate_points,z)
colnames(data) <- c("X1","X2","Z")

data.df <- as.data.frame(data)

ggplot() +
  geom_contour(data=data.df,aes(x=X1,y=X2,z=Z))

非工作示例:

library(MASS)
library(ggplot2)

N <- 100 
set.seed(123)

var_cov_matrix <- matrix(c(2,1,1,1),2)
mean <- c(5,1)

bivariate_points <- mvrnorm(N, mu = mean, Sigma = var_cov_matrix ) # <---- EDITED
z <- mvtnorm::dmvnorm(bivariate_points, mean = mean, sigma = var_cov_matrix)

data  <- cbind(bivariate_points,z)
colnames(data) <- c("X1","X2","Z")

data.df <- as.data.frame(data)

ggplot() +
  geom_contour(data=data.df,aes(x=X1,y=X2,z=Z))

【问题讨论】:

    标签: r ggplot2 normal-distribution


    【解决方案1】:

    在您的非工作示例中,由于您没有用于等高线图的常规网格,您可以改用 stat_density2d,即,

    ggplot(data.df, aes(x = X1, y = X2, z = Z)) +
      geom_point(aes(colour = z)) +
      stat_density2d()
    

    【讨论】:

      猜你喜欢
      • 2021-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-07
      • 2020-02-25
      • 2017-08-14
      • 2022-11-03
      • 2021-04-27
      相关资源
      最近更新 更多