做统计的经常涉及到在分布函数或密度函数表示概率,例如将P(X<x)的区域涂色,这用多边形很容易办到。有人可能不理解,密度函数不是光滑的么,多边形的边不光滑,怎么能填充我们需要的区域?须知数学和现实往往有差距,数学中存在连续、光滑的概念,计算机中(目前)是无法精确表达这些概念的,而且很多情况下没有必要,例如图形中就没必要取遍一段区间上的所有实数再画图,这本来也是不可能的,因此只需要近似就够了。
以下三幅图说明了这个近似的过程:第一幅图看起来很光滑很强大;第二幅图和第一幅图完全相同,只是把作图用到的数据点标了出来——实际上只用了[-3, 3]区间上的100个点;第三附图只用了10个点,图穷匕首见。



# png("polygon%d-s.png", width = 500, height = 500)
par(mar = c(2, 2, 0.1, 0.1), las = 1, mgp = c(3, 0.5, 0), tcl = -0.3)
x1 = seq(-3, 3, length = 100)
plot(x1, dnorm(x1), type = "n")
polygon(c(x1[1], x1[1:80], x1[80]), c(0, dnorm(x1[1:80]), 0), col = "gray", border = NA)
lines(x1, dnorm(x1))
plot(x1, dnorm(x1), type = "n")
polygon(c(x1[1], x1[1:80], x1[80]), c(0, dnorm(x1[1:80]), 0), col = "gray", border = NA)
lines(x1, dnorm(x1),type='o',pch=20)
x2 = seq(-3, 3, length = 10)
plot(x2, dnorm(x2), type = "n")
polygon(c(x2[1], x2[1:8], x2[8]), c(0, dnorm(x2[1:8]), 0), col = "gray", border = NA)
lines(x2, dnorm(x2),type='o',pch=20)
# dev.off()
赞赏
作为一名没有固定工作的自由职业者,我非常感谢您通过捐赠的方式来支持我的写作和开源软件开发。当然,捐赠纯属自愿,无论金额多少我都非常感谢。支付方式如下:
| 微信 | ← 奋力支开它俩 → | 支付宝 |
|---|---|---|
![]() |
其它爱心通道 ↓ Venmo: @yihui_xie Zelle: [email protected] PayPal: [email protected] |
![]() |
若使用 Venmo/Zelle/Payapl,请添加备注“gift”或“donation”,以免捐赠被视为我的可税收入。若使用 Paypal,支付类型请选 Family and Friends,而不要选 Goods and Services。
在不影响生活的前提下,我会将收到的捐赠以尽量大的比例回馈给开源社区和慈善机构。作为参考,2024-25 年间,我一共收到约三万美元捐赠,完税后我捐出了一万五千美元。

