当前位置: 首页 > news >正文

从0开始学习R语言--Day38--辛普森多样性指数

面对数据特点为不同种类,但具有不同影响的数据,需要根据需求侧重使用不同的方法。我们一般会将目光集中在某些地方可以做得更好的数据,但前提是要先对数据做分类判断。而相比其他方法,辛普森多样性指数在分类时就已经计算出了哪个数据是优势的概率更大,而其他的方法一般都倾向于判断种类稀有度,即判断类别的数据量,会多出很多计算量。

以下是一个例子:

set.seed(123)
# 生成数据:5个树种,随机分布
species <- c("Oak", "Pine", "Birch", "Maple", "Redwood")
counts <- sample(10:100, 5, replace = TRUE)  # 每个树种的个体数
names(counts) <- species# 构建数据框
forest_data <- data.frame(Species = species,Count = counts
)
print(forest_data)# 计算原始辛普森指数 (D)
simpson_D <- function(counts) {p <- counts / sum(counts)sum(p^2)
}# 计算改进的辛普森指数 (1 - D 或 1/D)
simpson_diversity <- function(counts, inverse = FALSE) {D <- simpson_D(counts)if (inverse) 1 / D else 1 - D
}# 示例
D_value <- simpson_D(counts)
diversity_value <- simpson_diversity(counts, inverse = FALSE)cat("原始辛普森指数 (D):", round(D_value, 4), "\n")
cat("改进的辛普森指数 (1 - D):", round(diversity_value, 4), "\n")
cat("逆辛普森指数 (1/D):", round(1/D_value, 4), "\n")library(vegan)
# 计算逆辛普森指数 (1/D)
diversity(counts, index = "invsimpson")  # 输出: 4.1389# 计算 Shannon 熵(对比)
diversity(counts, index = "shannon")    # 输出: 1.423library(ggplot2)
ggplot(forest_data, aes(x = Species, y = Count, fill = Species)) +geom_bar(stat = "identity") +labs(title = paste("树种分布 (辛普森多样性 =", round(diversity_value, 2)),x = "树种", y = "个体数") +theme_minimal()

输出:

set.seed(123)
# 生成数据:5个树种,随机分布
species <- c("Oak", "Pine", "Birch", "Maple", "Redwood")
counts <- sample(10:100, 5, replace = TRUE)  # 每个树种的个体数
names(counts) <- species# 构建数据框
forest_data <- data.frame(Species = species,Count = counts
)
print(forest_data)# 计算原始辛普森指数 (D)
simpson_D <- function(counts) {p <- counts / sum(counts)sum(p^2)
}# 计算改进的辛普森指数 (1 - D 或 1/D)
simpson_diversity <- function(counts, inverse = FALSE) {D <- simpson_D(counts)if (inverse) 1 / D else 1 - D
}# 示例
D_value <- simpson_D(counts)
diversity_value <- simpson_diversity(counts, inverse = FALSE)cat("原始辛普森指数 (D):", round(D_value, 4), "\n")
cat("改进的辛普森指数 (1 - D):", round(diversity_value, 4), "\n")
cat("逆辛普森指数 (1/D):", round(1/D_value, 4), "\n")library(vegan)
# 计算逆辛普森指数 (1/D)
diversity(counts, index = "invsimpson")  # 输出: 4.1389# 计算 Shannon 熵(对比)
diversity(counts, index = "shannon")    # 输出: 1.423library(ggplot2)
ggplot(forest_data, aes(x = Species, y = Count, fill = Species)) +geom_bar(stat = "identity") +labs(title = paste("树种分布 (辛普森多样性 =", round(diversity_value, 2)),x = "树种", y = "个体数") +theme_minimal()

输出表明,随机抽取两个个体属于同一物种的概率为0.2337,也就意味着这个数据的多样性较高,用1减去概率的方式能更明显地展现结果。逆指数代表着均匀分布的水平线,如果实际物种数大于该值,则说明存在优势物种,而香浓熵的结果代表物种为中等多样性,满足稀有物种的保护需求。

http://www.dtcms.com/a/266344.html

相关文章:

  • 相机:Camera原理讲解(使用OpenGL+QT开发三维CAD)
  • Gemini CLI安装及使用
  • [代码学习] c++ 通过H矩阵快速生成图像对应的mask
  • trae设置插件市场url
  • 力扣 hot100 Day34
  • Flink Oracle CDC 环境配置与验证
  • Flink OceanBase CDC 环境配置与验证
  • PHP接单涨薪系列(九)之计算机视觉实战:PHP+Stable Diffusion接单指南(2025高溢价秘籍)
  • 技术与情感交织的一生 (九)
  • 因果语言模型、自回归语言模型、仅解码器语言模型都是同一类模型
  • shell编程之awk命令详解
  • 【CHNS】预后/随访 记录
  • 京东和蚂蚁集团寻求人民币稳定币的批准
  • Mac软件打开提示:已损坏,无法打开。您应该将它移到废纸娄 怎么解决?
  • 全星 QMS:制造业全面质量管理的数字化全能平台
  • 【1】确认安装 Node.js 和 npm版本号
  • vue create 和npm init 创建项目对比
  • OneCode图生代码技术深度解析:从可视化设计到注解驱动实现的全链路架构
  • 【效率提升教程】飞书自动化上传图片和文字
  • oltp系统中的数据库的设计严格遵守第三范式,具体怎么理解呢
  • 建设工程长期停工,停工损失如何计算,谁来承担。
  • 【JAVA】类和对象(一)
  • 实战精准压缩打包,通过 Sharp4ArchiveZip过滤指定支持目录与文件类型
  • 蚁群算法的原理及实现示例
  • 【C++详解】STL-list使用(三大特性之一封装详解、cpu高速缓存命中率)
  • 时序数据库TDEngine安装和使用
  • Docker拉取bladex 、 sentinel-dashboard
  • 永洪科技荣获商业智能品牌影响力奖,全力打造”AI+决策”引擎
  • Echarts3D柱状图-圆柱体-文字在柱体上垂直显示的实现方法
  • Spring Boot + 本地部署大模型实现:优化与性能提升