r - 有没有办法计算ecdf的面积?
问题描述
我有这种数据集
B_dong A_dong count mean count2
14 1118053 1118053 15 129.7333 15
16 1118053 1118055 18 171.8333 33
19 1118053 1118060 4 270.7500 37
13 1118053 1118052 13 374.8462 50
17 1118053 1118057 21 389.9524 71
20 1118053 1118061 9 418.0000 80
15 1118053 1118054 10 435.1000 90
1 1118053 1102054 2 3066.0000 237
44 1118053 1122060 2 3080.0000 239
2 1118053 1102059 1 4867.0000 240
test2 <- structure(list(B_dong = c(1118053L, 1118053L, 1118053L, 1118053L,1118053L, 1118053L, 1118053L, 1118053L, 1118053L, 1118053L),A_dong = c(1118053L, 1118055L, 1118060L, 1118052L, 1118057L,1118061L, 1118054L, 1102054L, 1122060L, 1102059L), count = c(15L,18L, 4L, 13L, 21L, 9L, 10L, 2L, 2L, 1L), mean = c(129.733333333333,171.833333333333, 270.75, 374.846153846154, 389.952380952381,418, 435.1, 3066, 3080, 4867), count2 = c(15L, 33L, 37L,50L, 71L, 80L, 90L, 237L, 239L, 240L)), row.names = c(14L,16L, 19L, 13L, 17L, 20L, 15L, 1L, 44L, 2L), class = "data.frame")
我用这个数据集绘制了一个 ecdf
plot(ecdf(test2$mean), ylab="Fn(x)", verticals = FALSE,
col.01line = "gray70", pch = 19)
有没有办法可以计算 R 中 ecdf 图的面积(积分)?
解决方案
当然。如果您查看该图,它实际上是一系列矩形(添加了红线):
segments(sort(unique(test2$mean)), 0,
sort(unique(test2$mean)), ecdf(test2$mean)(sort(unique(test2$mean))),
col = "red")
每个“台阶”下的区域仅仅是每个矩形的宽度和高度。
宽度只是每个唯一值之间的差异(已排序):
diff(sort(unique(test2$mean)))
# [1] 42.10000 98.91667 104.09615 15.10623 28.04762 17.10000 2630.90000 14.00000 1787.00000
高度是ecdf
根据这些值的调用返回值函数凭经验找到的:
ecdf(test2$mean)(sort(unique(test2$mean)))
# [1] 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
由于宽度少了一个(最右边的总是一个点……我们都知道一个点下的面积为零),我们可以丢弃最后一个高度。
所以我们只是将高度乘以宽度并将它们相加:
sum(
head(ecdf(test2$mean)(sort(unique(test2$mean))), n = -1) *
diff(sort(unique(test2$mean)))
)
# [1] 3546.678
推荐阅读
- oop - 广泛使用工厂构造函数是个好主意吗?
- c# - 是否可以在 GraphQL 中发送具有多个值的枚举
- typescript - is there a typescript utility to extract a child type from parent type?
- angular - getBbox is not a function in AfterViewInit
- tableau-api - 在 SQL Server 中更新数据时刷新通过 Tableau public 发布的链接
- django - 无法获取社交网络项目中帖子的 DeleteView
- android - Draw 3D model on existing activity
- php - How to flatten / merge all layers in PHP TCPDI/TCPDF
- c# - CryptoJS Encryption and Decryption in UWP C#
- javascript - 如何在 Vue JS 中渲染服务器发送的 HTML 文件?