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 是否用置信区间进行总结?_R_Dplyr_Plyr_Confidence Interval - Fatal编程技术网

R 是否用置信区间进行总结?

R 是否用置信区间进行总结?,r,dplyr,plyr,confidence-interval,R,Dplyr,Plyr,Confidence Interval,我试图用ddply总结我的数据,我试图找到一种方法来总结数据,同时反映可靠性 下面是我的数据集的描述 BSTN ASTN BSEC ASTN1 BSTN2 ASTN2 BSTN3 ASTN3 BSTN4 ASTN4 BSTN5 TFtime Ttime ID 1 1001 1003 69551 1703 1703 0 0 0 0 0 0 399 2933 35404 2 1001 1006 69664 1703 1703

我试图用ddply总结我的数据,我试图找到一种方法来总结数据,同时反映可靠性

下面是我的数据集的描述

  BSTN ASTN  BSEC ASTN1 BSTN2 ASTN2 BSTN3 ASTN3 BSTN4 ASTN4 BSTN5 TFtime Ttime    ID
1 1001 1003 69551  1703  1703     0     0     0     0     0     0    399  2933 35404
2 1001 1006 69664  1703  1703     0     0     0     0     0     0    399  2284 35405
3 1001 1701 66606  1703  1703     0     0     0     0     0     0    118  1750 35406
4 1001 1701 66600  1703  1703     0     0     0     0     0     0    118  1750 35406
5 1001 1701 66601  1703  1703     0     0     0     0     0     0    118  1750 35406
6 1001 1703 69434     0     0     0     0     0     0     0     0      0  1005 35407
作为我的输出,我希望总结按“ASTN”和“BSTN”分组的Ttime和TFtime的值

对于“Ttime”和“TFtime”的平均值,我想反映95%的置信区间。因此,计算95%边界内的“Ttime”和“TFtime”的平均值如果存在多个BSTN~ASTN组合,我将如何使用ddply执行此过程。

下面是我使用的代码,希望修改

Routetable<-ddply(A,c(.(BSTN),.(ASTN1),.(BSTN2),.(ASTN2),.(BSTN3),.(ASTN3),.(BSTN4),.(ASTN4),.(BSTN5),.(ASTN)), 
                    summarise, count=length(BSTN),mean=mean(Ttime),TFtimemean=mean(TFtime))

Routetable使用包
dplyr
(比
plyr
更新得多)可以编写如下内容。“LB”和“UB”分别代表“下限”和“上限”

library(dplyr)

A %>% 
  group_by(across(starts_with("BSTN") | starts_with("ASTN"))) %>% 
  summarise(
    count = n(),
    mean_Ttime = mean(Ttime),
    mean_TFtime = mean(TFtime),
    LB_Ttime = mean_Ttime - qnorm(0.975) * sd(Ttime) / sqrt(count),
    UB_Ttime = mean_Ttime + qnorm(0.975) * sd(Ttime) / sqrt(count),
    LB_TFtime = mean_TFtime - qnorm(0.975) * sd(TFtime) / sqrt(count),
    UB_TFtime = mean_TFtime + qnorm(0.975) * sd(TFtime) / sqrt(count)
  )
输出

# A tibble: 4 x 17
# Groups:   BSTN, BSTN2, BSTN3, BSTN4, BSTN5, ASTN, ASTN1, ASTN2, ASTN3 [4]
#    BSTN BSTN2 BSTN3 BSTN4 BSTN5  ASTN ASTN1 ASTN2 ASTN3 ASTN4 count mean_Ttime mean_TFtime LB_Ttime UB_Ttime LB_TFtime UB_TFtime
#   <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int>      <dbl>       <dbl>    <dbl>    <dbl>     <dbl>     <dbl>
# 1  1001     0     0     0     0  1703     0     0     0     0     1       1005           0       NA       NA        NA        NA
# 2  1001  1703     0     0     0  1003  1703     0     0     0     1       2933         399       NA       NA        NA        NA
# 3  1001  1703     0     0     0  1006  1703     0     0     0     1       2284         399       NA       NA        NA        NA
# 4  1001  1703     0     0     0  1701  1703     0     0     0     3       1750         118     1750     1750       118       118
#一个tible:4 x 17
#分组:BSTN、BSTN2、BSTN3、BSTN4、BSTN5、ASTN、ASTN1、ASTN2、ASTN3[4]
#BSTN BSTN2 BSTN3 BSTN4 BSTN5 ASTN ASTN ASTN1 ASTN2 ASTN3 ASTN4计数平均时长LB时长UB时长LB时长UB时长LB时长UB时长
#                                            
#1001000017030001010050NA NA NA NA
#2 1001 1703 0 0 0 1003 1703 0 0 1 2933 399 NA NA NA NA NA NA
#3 1001 1703 0 0 0 1006 1703 0 0 0 1 2284 399 NA NA NA NA NA NA
# 4  1001  1703     0     0     0  1701  1703     0     0     0     3       1750         118     1750     1750       118       118

通过此示例数据,我们获得了几个NAs,因为在这些情况下,组的
计数
为1,但当您有较大的数据集时,很少会获得它们。

更新的答案

我不确定,但我想你实际上想做的是过滤所有大于/小于
平均值(x)-/+2*sd(x)
的值,并按每组进行过滤。下面的方法可以做到这一点。在
ggplot2
s菱形数据集的情况下,它保留了大约97%的所有值,只删除了极值

库(tidyverse)
钻石%>%
分组依据(切割、颜色)%>%
突变(穿过(c(x,y,z),
列表(低=~平均值(.x,na.rm=TRUE)-2*sd(.x,na.rm=TRUE),
高=~平均值(.x,na.rm=TRUE)+2*sd(.x,na.rm=TRUE))
)
) %>% 
过滤器(x>=x_low&x=x_low&y=z_low&z#A tible:52299 x 16
#>#组:剪切、颜色[35]
#>克拉切割颜色清晰度深度表价格x y z x_低x_高
#>                  
#>1 0.23理想ESI2 61.5 55 326 3.95 3.98 2.43 3.51 6.92
#>2 0.21 Prem~E SI1 59.8 61 326 3.89 3.84 2.31 3.52 7.65
#>3 0.290 Prem~I VS2 62.4 58 334 4.2 4.23 2.63 3.86 9.12
#>4 0.31良好J SI2 63.3 58 335 4.34 4.35 2.75 4.14 8.62
#>5 0.24甚高频VVS1 62.3 57 336 3.95 3.98 2.47 3.92 8.62
#>6 0.26非常高SI1 61.9 55 337 4.07 4.11 2.53 3.66 8.30
#>7 0.23甚高VS1 59.4 61 338 4.05 2.39 3.66 8.30
#>8 0.3良好J SI1 64 55 339 4.25 4.28 2.73 4.14 8.62
#>9 0.23理想J VS1 62.8 56 340 3.93 3.9 2.46 3.88 8.76
#>10 0.31理想J SI2 62.2 54 344 4.35 4.37 2.71 3.88 8.76
#>#…多了52289行,多了4个变量:y_low,y_high,
#>#z#u低,z#u高
由(v0.3.0)于2020年6月23日创建

旧答案

使用更好的示例数据,我们可以实现更具编程性的方法。作为示例,我使用
ggplot2
s
diamonds
dataset。请参阅下面代码中的注释

库(tidyverse)
钻石%>%
#建立你的小组
嵌套方式(切割、颜色)%>%
#在'cross'中定义要计算哪些变量的平均值和conf int
突变(t试验=列表)(总结(数据,跨越(c)(x,y,z),
~broom::tidy(t.test(.x‘‘);),
t测试=列表(解包(t测试,c(x,y,z),名称_sep=“”)%>%
#仅选择估算和配置间隔
选择(包含(“估计”)、包含(“配置”))%%>%
未测试(测试)
#>#tibble:35 x 12
#>#组:剪切、颜色[35]
#>剪切颜色数据x_估计y_估计z_估计x_形态。低x_形态。高
#>1公平D[163×8]6.02 5.96 3.84 5.89 6.15
#>2公平E[224×8]5.915.863.725.806.02
#>3公平F[312×8]5.99 5.93 3.79 5.89 6.09
#>4公平G[314×8]6.17 6.11 3.96 6.06 6.28
#>5公平H[303×8]6.58 6.50 4.22 6.47 6.69
#>6公平I[175×8]6.56 6.49 4.19 6.43 6.70
#>7公平J[119×8]6.75 6.68 4.32 6.55 6.95
#>8良好D[662×8]5.625.633.505.555.69
#>9良好E[933×8]5.625.633.505.565.68
#>10良好F[909×8]5.69 5.71 3.54 5.63 5.76
#>#…又有25行和4个变量:y_conf.low,
#>#y#u形态高,z#u形态低,z#u形态高
由(v0.3.0)于2020年6月19日创建

如果你想根据均值的置信区间过滤观察值,你可以如下调整我的方法。注意,这与过滤每个变量的顶部和底部2.5%不同,你会丢失很多数据

库(tidyverse)
钻石%>%
嵌套方式(切割、颜色)%>%
突变(t试验=s