【问题标题】:Plot vertical density of normal distribution in R and ggplot2在 R 和 ggplot2 中绘制正态分布的垂直密度
【发布时间】:2020-05-04 10:11:16
【问题描述】:

我想将 ggplot2 中的垂直正态分布绘制到现有的线性回归模型中,以便可视化同方差性。
我目前有以下代码和情节:

x <- runif(100, 0, 15)
y <- 1000 + 200*x + rnorm(100, 0, 300)
df <- data.frame(x, y)

lm_fit <- lm(y ~ x, data = df)


#with regression line
ggplot(df, mapping = aes(x=x, y=y)) + geom_point(color="blue") + geom_smooth(method='lm', se=FALSE, color="red") 

我想插入这样的密度曲线(正好相反):

【问题讨论】:

    标签: r ggplot2 linear-regression normal-distribution


    【解决方案1】:
    library(ggplot2)
    
    x <- runif(100, 0, 15)
    y <- 1000 + 200*x + rnorm(100, 0, 300)
    df <- data.frame(x, y)
    lm_fit <- lm(y ~ x, data = df)
    
    k <- 2.5
    sigma <- sigma(lm_fit)
    ab <- coef(lm_fit); a <- ab[1]; b <- ab[2]
    
    x <- seq(-k*sigma, k*sigma, length.out = 50)
    y <- dnorm(x, 0, sigma)/dnorm(0, 0, sigma) * 3
    
    x0 <- 0
    y0 <- a+b*x0
    path1 <- data.frame(x = y + x0, y = x + y0)
    segment1 <- data.frame(x = x0, y = y0 - k*sigma, xend = x0, yend = y0 + k*sigma)
    x0 <- 5
    y0 <- a+b*x0
    path2 <- data.frame(x = y + x0, y = x + y0)
    segment2 <- data.frame(x = x0, y = y0 - k*sigma, xend = x0, yend = y0 + k*sigma)
    x0 <- 10
    y0 <- a+b*x0
    path3 <- data.frame(x = y + x0, y = x + y0)
    segment3 <- data.frame(x = x0, y = y0 - k*sigma, xend = x0, yend = y0 + k*sigma)
    
    ggplot(df, mapping = aes(x=x, y=y)) + geom_point(color="blue") + 
      geom_smooth(method='lm', se=FALSE, color="red") + 
      geom_path(aes(x,y), data = path1, color = "green") + 
      geom_segment(aes(x=x,y=y,xend=xend,yend=yend), data = segment1) +
      geom_path(aes(x,y), data = path2, color = "green") + 
      geom_segment(aes(x=x,y=y,xend=xend,yend=yend), data = segment2) +
      geom_path(aes(x,y), data = path3, color = "green") + 
      geom_segment(aes(x=x,y=y,xend=xend,yend=yend), data = segment3)
    

    【讨论】:

      猜你喜欢
      • 2018-05-15
      • 2020-10-16
      • 2015-01-04
      • 2013-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-03
      相关资源
      最近更新 更多