首页 > 解决方案 > 将递归向量更改为原子向量以进行 t 检验

问题描述

我是 R 新手,正在尝试对两种方法进行 t 检验。我不断收到错误 is.atomic is not TRUE。我知道我需要使我的数据原子化,但我还没有找到在线方法。

我已经运行代码来检查数据是否是递归的,并执行了 as.data.frame(mydata)。

titanic_summary <- data.frame(Outcome = c("Survived", "Died"), 
             Mean_Age = c(28.34369, 30.62618),
             N = c(342, 549),
             Total_Missing = c(52, 125))
titanic_summary

运行统计测试(两个样本 T 检验)

str(titanic_summary)

as.data.frame(titanic_summary)
is.atomic(titanic_summary)
is.recursive(titanic_summary)

titanic_test <- titanic_summary %>%
  t.test(Outcome~Mean_Age)

var(x) 中的错误:is.atomic(x) 不是 TRUE

标签: r

解决方案


t.test不像你想象的那样工作。为避免该特定错误,您可以改用类似的东西,titanic_test <- t.test(Mean_Age ~ Outcome, data = titanic_summary)但这只会给您带来不同的错误,这归结为真正的问题:

您可能想查看年龄和生存之间是否存在关系,即平均年龄的差异是否2.28249显着,但您需要个人年龄或其他一些关于分散的其他信息

如果您确实使用了详细的数据集,那么我怀疑您真正想要的是这样的:

library(titanic)
titanic_test <- t.test(Age ~ Survived, data = titanic_train)

这将给出(对于titanic包中使用的 Kaggle 选择的训练集)

> titanic_test

        Welch Two Sample t-test

data:  Age by Survived
t = 2.046, df = 598.84, p-value = 0.04119
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 0.09158472 4.47339446
sample estimates:
mean in group 0 mean in group 1 
       30.62618        28.34369 

推荐阅读