尝试使用二进制变量为我的数据框中的数字变量计算科恩d,出了什么问题?

时间:2019-01-22 12:13:28

标签: r statistics

我有一个数据框,其中包括来自两组的参与者,以及几个带有标准化结果的数值。我想计算每个变量的科恩d和学生t。 (我知道进行多次t检验不是一个好习惯,但是在这种情况下没关系)。

我正在使用cohen.d包中的psych函数,但是每当我尝试调用该函数时,都会出现以下错误

Error in psych::cohen.d(cohen_df, cohen_df$LOWvsHigh, alpha = 0.05,  : 
  object 'group.in' not found

数据:

set.seed(24)
cohen_df <- data.frame(
  LOWvsHigh = sample(0:1, 24, replace = TRUE),
  v1 = rnorm(24),
  v2 = rnorm(24),
  v3 = rnorm(24)
)

然后,我在函数中指定此数据集以及分组变量cohen_df$LOWvsHigh

cohen.d(cohen_df, cohen_df$LOWvsHigh, alpha = 0.05, std = TRUE, dictionary = NULL)

但是我得到上面指定的错误以及以下其他警告:

In addition: Warning messages:
1: In cor(diffs, use = use, method = method) :
  the standard deviation is zero
2: In cov2cor(xvals$rwg) :
  diag(.) had 0 or NA entries; non-finite result is doubtful
3: In cor(new.data[, (nvar + 1):ncol(new.data)], diffs, use = "pairwise",  :
  the standard deviation is zero

仔细查看函数中的代码,似乎我的分组变量未通过第一次测试,因为它不是长度1,并且在数据框的同名中找不到,但是我不确定如何进行更改以使其符合这些条件,同时仍是分组变量。

function (x, group, alpha = 0.05, std = TRUE, dictionary = NULL) 
{
    cl <- match.call()
    if ((length(group) == 1) && (group %in% colnames(x))) {
        group <- which(colnames(x) %in% group)
        group.in <- TRUE
    }
...

我们非常感谢您的帮助,如果您有其他建议,也欢迎他们。

我尝试使用t.test,但是单独调用每个变量很繁琐。

谢谢!

1 个答案:

答案 0 :(得分:1)

我使用 psych 包中的cohen.d()函数多次遇到此问题。使用相同的cohen.d函数加载 effsize 包,您将可以使用它。