如何在数据子集上运行t检验
首先,该数据集是否为t检验的整齐形式?如何在数据子集上运行t检验
https://i.stack.imgur.com/tMK6R.png
其次,我试图做一个两个样本t检验在治疗A和B的时间为3“结果1”的手段比较。我会如何去做这件事?
的样本数据:
df <- structure(list(code = c(100, 100, 100, 101, 101, 101, 102, 102,
102, 103, 103, 103), treatment = c("a", "a", "a", "b", "b", "b",
"a", "a", "a", "b", "b", "b"), sex = c("f", "f", "f", "m", "m",
"m", "f", "f", "f", "f", "f", "f"), time = c(1, 2, 3, 1, 2, 3,
1, 2, 3, 1, 2, 3), `outcome 1` = c(21, 23, 33, 44, 45, 47, 22,
34, 22, 55, 45, 56), `outcome 2` = c(21, 32, 33, 33, 44, 45,
22, 57, 98, 65, 42, 42), `outcome 3` = c(62, 84, 63, 51, 45,
74, 85, 34, 96, 86, 45, 47)), .Names = c("code", "treatment",
"sex", "time", "outcome 1", "outcome 2", "outcome 3"),
class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -12L))
首先你必须定义要测试的子集,那么你就可以运行t检验。您不必像我一样将变量存储在变量中,但它使得t检验输出更加清晰。
采用t检验问题通常情况下,我建议帮助提供t.test,但由于这涉及到更复杂的子集,我已经包括了如何做到这一点的位置:?
var_a <- df$`outcome 1`[df$treatment=="a" & df$time==3]
var_b <- df$`outcome 1`[df$treatment=="b" & df$time==3]
t.test(var_a,var_b)
输出:
Welch Two Sample t-test
data: var_a and var_b
t = -3.3773, df = 1.9245, p-value = 0.08182
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-55.754265 7.754265
sample estimates:
mean of x mean of y
27.5 51.5
谢谢!这就是我想要做的! 虽然我不断收到此错误。 我已经将数据集导出到r中作为“tidy-data”,结果变量是我数据集中的权重。 012f t.test(df $'weight' [df $ treatment ==“a”&df $ time == 3],df $'weight' [df $ treatment ==“b”&df $ time == 3],data = tidy_data) df $ weight中的错误:'closure'类型的对象不是子集合 – DiscoR
此错误是变量命名差异的结果。我将您的示例数据存储为“df”,而您看起来像将您的数据存储为“tidy_data”。因此,您可以在将“df”的所有引用更改为“tidy_data”之后尝试重新运行t检验代码,反之亦然。为了清楚起见,我刚刚编辑了问题中提供的示例数据以存储为“df”。 – www
非常感谢您的帮助!我现在开始工作了!你认为我有我的数据的格式可能比较整洁吗? 我应该阅读哪些概念/主题来了解如何进行子集化,就像上面描述的那样? – DiscoR
请将您的数据读入R并发布dput()的输出而不是数据的图像;也见[SO问题技巧](https://*.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 – www
'?t.test' - 在页面底部有示例。首先尝试,然后如果你仍然有问题发布你的尝试。 – Gregor
@Gregor我试过了示例测试。问题在于数据的排列方式。我以为我整理的数据格式很整洁。我的结果变量之一是在三个不同的时间。我只想比较治疗a和治疗b在时间= 3的结果变量1的平均值。我不知道如何做到这一点。我可以重新安排我的数据,但是,我认为目前的格式是一个整齐的格式。你可以看看dput(),看看这个格式看起来是否整齐? – DiscoR