R中频率表的模态测试?

问题描述

我从基本格式的 r 中的 shapefile 创建了高程与面积 (m^2) 的频率表:

elevation_frequencies <- data.table(elevation = c(0,1,2,3,4,5,6),area = c(65,345,876,9834,3487,987))

我想计算关于这种跨海拔区域分布的统计数据(即模态、偏斜、均值)。然而,所有这些统计数据通常应用于原始数据而不是频率表。因为我从 shapefile 中提取了这个频率表,所以我没有原始数据。我可以通过创建一个向量来生成原始数据,其中每个高程都由区域列中的相应值重复,但是,我的真实数据中的许多区域值都是 1,000,000 公里,因此这会耗尽我的记忆。

有没有办法将统计数据(即模态(diptest?)、偏斜、均值等)直接应用于频率表?

提前致谢!

解决方法

如果您使用相应的公式,按照下一个模式您将能够实现您的目标:

x 的统计平均值等于 sum(x)/length(x) 则:

sum(x) 等于 0(65 次)+ 1(345 次)之和,以此类推。即 0*65 + 1*345 + ... + 6*987

x 的长度是 65 (0's) + 345 (1's) 等等。即 65 + 345 + ... + 987

这样:

(elevation_frequencies <- data.frame(elevation = c(0,1,2,3,4,5,6),area = c(65,345,876,9834,3487,987)))

(mean = sum(elevation_frequencies$elevation * elevation_frequencies$area)/sum(elevation_frequencies$area))
[1] 3.524298
(mode = elevation_frequencies$elevation[elevation_frequencies$area == max(elevation_frequencies)])
3

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...