调用smd函数时出现‘unused arguments’错误求助
问题原因与解决方案
你遇到的错误是因为smd包的smd()函数并不支持传入Mean.1、s.1这类单独的汇总统计参数。该函数的设计逻辑是直接接收两组原始数据向量,而非预计算的均值、标准差和样本量。
正确用法示例
方法1:传入原始数据(符合smd包函数设计)
如果能获取或生成两组原始数据,可以直接传入:
library(smd) Mean_x <- 75 Mean_y <- 25 n_x <- 25 n_y <- 25 sd_x <- 40 sd_y <- 20 # 生成模拟原始数据(如果有真实数据可替换) group_x <- rnorm(n_x, mean = Mean_x, sd = sd_x) group_y <- rnorm(n_y, mean = Mean_y, sd = sd_y) # 计算SMD temp_smd <- smd(group_x, group_y)
方法2:仅用汇总统计手动计算SMD
如果只有预计算的均值、标准差和样本量,可直接用SMD的公式手动计算(这也是smd函数底层的核心逻辑):
Mean_x <- 75 Mean_y <- 25 n_x <- 25 n_y <- 25 sd_x <- 40 sd_y <- 20 # 计算合并标准差 pooled_sd <- sqrt( ((n_x - 1)*sd_x^2 + (n_y - 1)*sd_y^2) / (n_x + n_y - 2) ) # 计算标准化均数差(SMD) temp_smd <- (Mean_x - Mean_y) / pooled_sd
方法3:用其他支持汇总统计的包(备选)
如果习惯通过汇总统计参数计算,可以使用effectsize包的cohen_d()函数(功能等价于SMD):
library(effectsize) Mean_x <- 75 Mean_y <- 25 n_x <- 25 n_y <- 25 sd_x <- 40 sd_y <- 20 temp_smd <- cohen_d( mu1 = Mean_x, mu2 = Mean_y, sd1 = sd_x, sd2 = sd_y, n1 = n_x, n2 = n_y )
内容的提问来源于stack exchange,提问作者Koning_wurm
相关产品推荐
相关产品推荐

