You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中计算分三列的植被高度比例变量的异质性

植被高度异质性与均匀性的计算方案

针对你的样带植被高度比例数据,以下几种方法可以有效衡量异质性/均匀性:


一、行内标准差/变异系数

直接计算每个样带三个比例的标准差,数值越大说明比例差异越大(异质性越高),数值越小则分布越均匀。由于三个比例总和固定为100,每行的均值约为33.33,变异系数(标准差/均值)和标准差的排序结果完全一致,可按需选择。

R代码实现:

# 提取植被比例列
veg_cols <- c("vegunder5cm", "vegbw5and15cm", "vegover15cm")

# 计算每行的标准差
df$sd_hetero <- apply(df[, veg_cols], 1, sd)

# 计算变异系数(可选)
df$cv_hetero <- df$sd_hetero / rowMeans(df[, veg_cols])

# 按异质性从高到低排序
df_sorted <- df[order(-df$sd_hetero), ]

二、香农-威纳多样性指数

这是生态学中衡量群落异质性的经典指标,公式为:

H = -Σ(p_i × ln(p_i))
其中p_i是每个高度类别的比例(转换为0-1的小数)。H值越大,说明植被高度分布越均匀(异质性越低);H值越小,说明分布越集中在少数类别(异质性越高)。

R代码实现:

# 定义香农指数计算函数
shannon_index <- function(x) {
  p <- x / 100  # 转换为0-1比例
  p <- p[p > 0]  # 排除0值,避免ln(0)报错
  -sum(p * log(p))
}

# 计算每个样带的香农指数
df$shannon_index <- apply(df[, veg_cols], 1, shannon_index)

# 按均匀性从高到低排序(即异质性从低到高)
df_sorted_shannon <- df[order(-df$shannon_index), ]

三、辛普森指数

辛普森指数的计算公式为:

D = Σ(p_i²)
D值越大,说明分布越集中(异质性越高);D值越小,说明分布越均匀(异质性越低)。也可以用1-D来表示,此时数值越大则均匀性越高。

R代码实现:

# 定义辛普森指数计算函数
simpson_index <- function(x) {
  p <- x / 100
  sum(p^2)
}

# 计算辛普森指数D
df$simpson_D <- apply(df[, veg_cols], 1, simpson_index)
# 计算1-D(可选,数值越大均匀性越高)
df$simpson_1D <- 1 - df$simpson_D

# 按异质性从高到低排序(D值从大到小)
df_sorted_simpson <- df[order(-df$simpson_D), ]

结果说明

  • 比如样带10(vegunder5cm=0,vegbw5and15cm=30,vegover15cm=70)的标准差最大、香农指数最小、辛普森D值最大,说明它的异质性最高,分布最集中;
  • 样带1(37.4、43.4、19.2)的标准差较小、香农指数较高,说明分布相对均匀,异质性较低。

内容的提问来源于stack exchange,提问作者weed_atman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 02:28:12