在R中绘制各种分布曲线下的面积

时间:2018-11-15 16:23:43

标签: r plot distribution probability-distribution

假设我正在尝试查找学生t分布的某个值以下的面积。例如,我以23个自由度计算出我的t检验统计量为t = 1.78。我知道如何使用pt()函数获取t = 1.78以上曲线下方的面积。如何获得具有23个自由度的学生分布图以及阴影在1.78以上的曲线下的区域的图。也就是说,我希望使用适当的图绘制pt(1.78,23,lower.tail = FALSE)的曲线阴影区域。有办法吗?

2 个答案:

答案 0 :(得分:2)

ggplot版本:

ggplot(data.frame(x = c(-4, 4)), aes(x)) +
  stat_function(fun = dt, args =list(df =23)) +
  stat_function(fun = dt,   args =list(df =23),
                xlim = c(1.78,4),
                geom = "area") 

enter image description here

答案 1 :(得分:1)

这应该有效:

x_coord <- seq(-5, 5, length.out = 200) # x-coordinates
plot(x_coord, dt(x_coord, 23), type = "l",
     xlab = expression(italic(t)), ylab = "Density", bty = "l") # plot PDF
polygon(c(1.78, seq(1.78, 5, by = .3), 5, 5), # polygon for area under curve
        c(0, dt(c(seq(1.78, 5, by = .3), 5), 23), 0),
        col = "red", border = NA)

关于polygon()的参数:

  • 您的第一个点和最后一个点应分别为[1.78,0]和[5,0](仅在绘图转到5的情况下为5)-这些基本上使红色多边形的底部边缘发白
  • 第二个点和倒数第二个点是[1.78,dt(1.78, 23)]和[5,dt(5, 23)]-这些点定义了上边缘的端点
  • 介于两者之间的东西只是沿曲线[x,{dt(x, 23)]的任意点的X和Y坐标-点越多,多边形越平滑

希望这会有所帮助