当前位置: 首页 > 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.lryc.cn/news/580164.html

相关文章:

  • 重学前端002 --响应式网页设计 CSS
  • 【网络安全基础】第三章---公钥密码和消息认证
  • <tauri><rust><GUI>使用tauri创建一个文件夹扫描程序
  • 【网络】Linux 内核优化实战 - net.core.flow_limit_table_len
  • C++26 下一代C++标准
  • 深度学习笔记29-RNN实现阿尔茨海默病诊断(Pytorch)
  • 倾斜摄影无人机飞行航线规划流程详解
  • 前端开发-前置知识
  • 2025.7.4总结
  • 物联网数据安全区块链服务
  • DeepSeek-R1知识蒸馏和微调实践(一)源码
  • 使用 C# 发送电子邮件(支持普通文本、HTML 和附件)
  • BEVFormer模型处理流程
  • 佰力博科技与您探讨表面电阻的测试方法及应用领域
  • Java程序员短时间内如何精通Redis?
  • 基于大模型的强直性脊柱炎全周期预测与诊疗方案研究
  • Spring Boot + 本地部署大模型实现:安全性与可靠性保障
  • 基于Linux的Spark本地模式环境搭建实验指南
  • RabbitMQ 4.1.1初体验
  • Ubuntu Linux Cursor 安装与使用一
  • Web前端数据可视化:ECharts高效数据展示完全指南
  • 【C#】入门
  • Linux三剑客:grep、sed、awk 详解以及find区别
  • 大语言模型预训练数据——数据采样方法介绍以GPT3为例
  • 基于Apache MINA SSHD配置及应用
  • CppCon 2018 学习:OOP is dead, long live Data-oriented design
  • ABP VNext + RediSearch:微服务级全文检索
  • PyCharm 安装使用教程
  • Rust异步爬虫实现与优化
  • 全星 QMS:制造业全面质量管理的数字化全能平台