我想对被捕时男女之间的平均年龄进行t检验。但是,我的数据安排如下:
Sex: Age:
M 21
F 31
F 42
M 43
为了进行t检验,有没有办法将性别分为两个不同的类别(男性和女性)?或者在一个类别中进行t检验?已经提出了类似的问题,但似乎没有一个问题适用于我的数据集。感谢您提供的任何指导!
答案 0 :(得分:4)
首先,这是第一个问题,很高兴看到高中的孩子们学习统计编程!
第二:你自己正在顺利找到答案,这应该可以帮助你实现目标。
我正在做一些假设:
prof
是您的数据框的名称
2您希望比较T-test中教授的性别年龄您正在按照您的逻辑向正确的方向努力。我在prof
数据框中添加了一些补充观察结果,但这是它应该如何工作:
# this is a comment in the code, not code, but it explains the reasoning, it always starts with hash tag
women<-prof[which(prof$Sex=="F"),] #notice the comma after parenthesis
men<-prof[which(prof$Sex=="M"),] #notice the comma after parenthesis here too
逗号的左边选择带有该数据的行==&#34;&#34;。逗号右边会告诉你哪些列为空,告诉r包含所有列。
head(men);head(women) # shows you first 6 rows of each new frame
# you can see below that the data is still in a data frame
Sex Age
1 M 21
4 M 43
5 M 12
6 M 36
7 M 21
10 M 23
Sex Age
2 F 31
3 F 42
8 F 52
9 F 21
11 F 36
所以为了测试年龄,你必须按名称和年龄列来询问数据框,例如:men$Age
t.test(women$Age, men$Age) #this is the test
# results below
Welch Two Sample t-test
data: women$Age and men$Age
t = 0.59863, df = 10.172, p-value = 0.5625
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-11.93964 20.73964
sample estimates:
mean of x mean of y
36.4 32.0
在R中几乎总有不止一种方式。有时初始排序更复杂,但是使用数据更容易。因此,如果您不想从数据框中解决年龄问题,可以在初始子集中要求列
women<-prof[which(prof$Sex=="F"),"Age"] #set women equal to just the ages where Sex is 'F'
men<-prof[which(prof$Sex=="M"), "Age"]#set men equal to just the ages where Sex is 'M'
再次检查您的数据,这次只是每个变量的年龄向量:
head(women); head(men)
[1] 31 42 52 21 36
[1] 21 43 12 36 21 23
然后你的t检验是一个简单的比较:
t.test(women,men)
# notice same results
Welch Two Sample t-test
data: women and men
t = 0.59863, df = 10.172, p-value = 0.5625
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-11.93964 20.73964
sample estimates:
mean of x mean of y
36.4 32.0
您的问题似乎在于代码中的三个位置:
gender=="F"
Sex:
[,]
中不使用逗号来指定行,然后指定列上述代码可以帮助您达到目标。
答案 1 :(得分:0)
比较男性年龄与女性年龄的t检验可以像:
df = data.frame(
gender = c("M", "F", "F", "M"),
age = c(21, 31, 42, 43)
)
t.test(age ~ gender, data = df)
根据您的问题,这是最相关的测试。
当你说“在一个类别中执行t检验”时,我不确定你的意思:你可以将一组中的一组值与一些已知的参考值(如0)进行比较,但我不确定是什么这可以告诉你(除了你的样本中的男人不是0岁)。
答案 2 :(得分:0)
您可以尝试以下代码:
t.test(Age ~ Sex, paired = FALSE, data = datasetName)
它应该为您提供相同的结果,而无需创建更多子集。