Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
组内R中的一个样本T检验_R_T Test - Fatal编程技术网

组内R中的一个样本T检验

组内R中的一个样本T检验,r,t-test,R,T Test,我在R做了一个样本t检验,但今天我有一个很大的挑战。我将数据按一个变量分组,并希望对每组执行一个样本t检验。我可以在SPSS中很好地实现这一点,但现在在R中这是一个令人头痛的问题,无论谁知道如何进行这项工作来提供帮助。示例场景 Location=rep(c("Area_A","Area_B"),4) temp=rnorm(length(Location),34,5) sample_data=data.frame(Location,ph) sample_data Location

我在R做了一个样本t检验,但今天我有一个很大的挑战。我将数据按一个变量分组,并希望对每组执行一个样本t检验。我可以在SPSS中很好地实现这一点,但现在在R中这是一个令人头痛的问题,无论谁知道如何进行这项工作来提供帮助。示例场景

Location=rep(c("Area_A","Area_B"),4) 
temp=rnorm(length(Location),34,5) 
sample_data=data.frame(Location,ph)
sample_data
Location       temp
1   Area_A 32.73782
2   Area_B 26.29996
3   Area_A 40.75101
4   Area_B 26.68309
5   Area_A 33.94259
6   Area_B 26.48326
7   Area_A 37.92506
8   Area_B 29.22532
假设上例中的假设平均值为35,单样本t检验为

t.test(sample_data$temp,mu=35)
这让我

 One Sample t-test

data:  sample_data$ph
t = -1.6578, df = 7, p-value = 0.1413
alternative hypothesis: true mean is not equal to 35
95 percent confidence interval:
 27.12898 36.38304
sample estimates:
mean of x 
 31.75601

但这是针对所有群体的。我可以在SPSS中完成。有没有办法用一行代码在R中实现这一点,或者如果不能用一行代码,谁能帮我实现这一点。提前感谢。

一种解决方案是将每组的t.测试结果保存为列表:

# reproducible results
set.seed(8)

# example data
Location=rep(c("Area_A","Area_B"),4) 
temp=rnorm(length(Location),34,5) 
sample_data=data.frame(Location,temp)

library(dplyr)

dt_res = sample_data %>%
  group_by(Location) %>%                       # for each group
  summarise(res = list(t.test(temp, mu=35)))   # run t.test and save results as a list

# see the list of results
dt_res$res  

# [[1]]
# 
# One Sample t-test
# 
# data:  temp
# t = -0.76098, df = 3, p-value = 0.502
# alternative hypothesis: true mean is not equal to 35
# 95 percent confidence interval:
#   29.93251 38.11170
# sample estimates:
#   mean of x 
# 34.0221 
# 
# 
# [[2]]
# 
# One Sample t-test
# 
# data:  temp
# t = -1.045, df = 3, p-value = 0.3728
# alternative hypothesis: true mean is not equal to 35
# 95 percent confidence interval:
#   26.37007 39.36331
# sample estimates:
#   mean of x 
# 32.86669 
另一种解决方案是将每个组的测试结果保存为数据帧:

library(dplyr)
library(tidyr)
library(broom)

sample_data %>%
  group_by(Location) %>%                       
  summarise(res = list(tidy(t.test(temp, mu=35)))) %>%
  unnest()

# # A tibble: 2 x 9
#   Location estimate statistic p.value parameter conf.low conf.high method            alternative
#    <fct>       <dbl>     <dbl>   <dbl>     <dbl>    <dbl>     <dbl> <chr>             <chr>      
# 1 Area_A       34.0    -0.761   0.502         3     29.9      38.1 One Sample t-test two.sided  
# 2 Area_B       32.9    -1.05    0.373         3     26.4      39.4 One Sample t-test two.sided 
库(dplyr)
图书馆(tidyr)
图书馆(扫帚)
样本数据%>%
分组依据(位置)%>%
总结(res=列表(整洁(t.test(temp,mu=35)))%>%
unnest()
##A tibble:2 x 9
#位置估计统计p.值参数conf.low conf.high方法备选方案
#                                                     
#1区域_A 34.0-0.761 0.502 3 29.9 38.1单侧样本t试验
#2区域_B 32.9-1.05 0.373 26.4 39.4单侧样本t检验

这两种方法的原理是相同的。您按
位置分组
,并对每组进行t检验。所有这些都是关于你喜欢哪种输出。

没有提供数据,也没有关于你想要比较的值的信息。帮不了你多少忙。。。。然而,在这里你会发现一些非常有用的信息和例子:检查一下,我添加了一些更多的信息,我认为你需要更新
data.frame(Location,ph)
data.frame(Location,temp)
这一个有效!!