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

如何用R计算样本量递增时的累积方差

计算累积样本方差的R实现

你可以通过以下几种方式为数据框添加累积方差列,满足“每行记录当前及之前所有variable值的方差”的需求:

方法1:使用purrr包(简洁高效)

library(purrr)

# 生成可复现的测试数据
set.seed(123)
data <- data.frame(run = 1:10, variable = runif(10))

# 计算累积方差,第一行设为NA(单个值无方差)
data$cum_var <- map_dbl(1:nrow(data), ~var(data$variable[1:.x]))
data$cum_var[1] <- NA

方法2:Base R实现(无需额外包)

set.seed(123)
data <- data.frame(run = 1:10, variable = runif(10))

# 循环计算每行的累积方差
data$cum_var <- sapply(1:nrow(data), function(i) {
  if (i == 1) NA else var(data$variable[1:i])
})

验证结果

运行上述代码后,数据框会新增cum_var列,结果如下:

print(data)
#    run   variable    cum_var
# 1    1 0.28757752         NA
# 2    2 0.78830514 0.12524084
# 3    3 0.40897692 0.06093114
# 4    4 0.88301740 0.06725104
# 5    5 0.94046728 0.07840874
# 6    6 0.04555650 0.15881884
# 7    7 0.52810549 0.13809772
# 8    8 0.89241904 0.13043347
# 9    9 0.55143501 0.12112443
# 10  10 0.45661474 0.11366764

注意事项

  • var()函数默认计算样本方差(自由度为n-1),如果需要计算总体方差(自由度为n),可以替换为自定义计算式:
    # 总体方差计算示例
    data$cum_pop_var <- sapply(1:nrow(data), function(i) {
      if (i == 1) NA else {
        x <- data$variable[1:i]
        sum((x - mean(x))^2) / length(x)
      }
    })
    
  • 加入set.seed(123)是为了让随机生成的variable值固定,方便你验证结果一致性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 19:10:27