如何在10000次重复中优化r中的分层随机抽样

布科梅科

我需要一个函数,它使用分层随机取样,以重复(10000次)样品从我的数据变化的样品的尺寸,计算平均值和标准偏差,并返回变动系数为每一个样本大小。样本大小为3到30。到目前为止,我已经写过这篇文章,但是太慢了。由于需要多次运行此部分代码,因此我需要帮助使其更快地运行。数据帧dt1具有约900个观测值K_level具有6个级别

谢谢

samp <- function(nn){
  dt1 <- as.data.table(dt1)
  dt2 <- replicate(10000, dt1[, .SD[sample(x = .N, size = nn)], by = K_level], 
          simplify =  FALSE) %>% 
  data.table::rbindlist() %>% 
  .[,.(avg=mean(Bunch_weight), Sd = sd(Bunch_weight)),.(Trt)] %>% 
  .[, cvs:= Sd/avg] 
  dt3 <-  data.table::transpose(dt2)
  colnames(dt3) <- as.character(dt3[1,])
  dt4 <- dt3 %>% .[-c(1:3),] %>% .[, sample:= paste0(nn,"mts")]
  return(dt4)
}
# use the function
zzz <- c(3:30)
dat5 <- map_df(.x = c(3:30), .f = samp)  

my data
Block Trt Matno Cycle Date.harvested Girth0 Girth100 Hands Fingers Bunch_weight    Variety K_level
  1:    B1  T2     6     1     2020-03-05      1        1     1       1            5     NFUUKA      0K
  2:    B1  T6     2     1     2020-03-05      2        2     2       1            9     KIBUZI    150K
  3:    B1  T6     3     1     2020-03-09      3        3     1       2            5     NFUUKA    150K
  4:    B1  T6    24     1     2020-02-28      4        4     2       1            9     KIBUZI    150K
  5:    B1  T6    29     1     2020-03-03      5        5     3       3           14     NFUUKA    150K
 ---                                                                                                   
780:    B3  T9    12     1     2020-05-22      4        4     4       4            8     NFUUKA      0K
781:    B3 T10    10     1     2020-05-25    145       47     5       5           17     NFUUKA      0K
782:    B3 T11    14     1     2020-05-16     27       88     4       4           13 MBWAZIRUME     75K
783:    B3 T14    25     1     2020-05-24     39      119     4       3           14    KISANSA    150K
784:    B3 T14    34     1     2020-05-17     27       28     5       3           15  NAKITEMBE    150K

expected output
 T9                T1                T6               T14               T13                T7               T15
1: 0.359418301512993 0.259396490785659 0.352112606549899 0.270098407993612  0.33255344147661 0.246297750226982 0.290376334651094
2:  0.36336940312546 0.260242995748078 0.347937570013322  0.26993786977025 0.327215546595358 0.247590005787063 0.290659581719395
                  T8                T3                T4               T18               T17               T10               T11
1: 0.203153174250691  0.31104051648633 0.308308574237779 0.352809537743834 0.380933443587759 0.345214551318585 0.265386556956891
2:  0.20127162406244 0.311140161227165 0.303006865683816 0.350513136037457  0.37965782184899 0.342121680883066  0.26389652807615
                  T5               T12               T16                T2 Sample
1: 0.424907358546752 0.262966077905422 0.292193075443918 0.366954072154349      3mts
2: 0.413114236465515 0.264733595838422 0.296869773806402  0.36574334095091      4mts
伪旋转

这是您的代码,只是稍微改了一下。我认为它会产生相同的输出,但是很难说出来,因为随机性是以不同的顺序完成的,因此重置随机种子无济于事。它应该快得多(> 10倍)。

samp2 <- function(nn){
  dt1 <- as.data.table(dt1)
  dt2 <- dt1[, .SD[as.vector(replicate(10000, sample(.N, nn)))], by = K_level, 
    .SDcols = c('Trt', 'Bunch_weight')][, 
      .(avg=mean(Bunch_weight), Sd = sd(Bunch_weight)), by = .(Trt)]
  dt2[, cvs:= Sd/avg]
  dt3 <-  data.table::transpose(dt2)
  colnames(dt3) <- as.character(dt3[1,])
  dt4 <- dt3 %>% .[-c(1:3),] %>% .[, sample:= paste0(nn,"mts")]
  return(dt4[])
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在R中没有替换的重复分层随机抽样

来自分类Dev

如何在随机抽样中获得3个没有重复的列表?(右)

来自分类Dev

在python中随机抽样

来自分类Dev

Excel中的随机抽样

来自分类Dev

Elasticsearch中的加权随机抽样

来自分类Dev

生成重复随机抽样

来自分类Dev

从数据帧进行分层随机抽样

来自分类Dev

R中的分层抽样或比例抽样

来自分类Dev

R中的分层抽样或比例抽样

来自分类Dev

R中代码中的每种可能组合,而不是随机抽样

来自分类Dev

在进行随机抽样时,您是否考虑事件的不同概率?(在R中)

来自分类Dev

在进行随机抽样时,您是否考虑事件的不同概率?(在R中)

来自分类Dev

从随机抽样中提取R中的近似概率密度函数(pdf)

来自分类Dev

从概率分布中随机抽样一定次数

来自分类Dev

使用 clusterR 从大型栅格中随机抽样

来自分类Dev

随机抽样的子集,用R替换

来自分类Dev

随机抽样分组

来自分类Dev

高效随机抽样

来自分类Dev

如何在 python 中生成随机抽样。与整数。给定总和和大小

来自分类Dev

如何在R中重复1000次此随机游走模拟?

来自分类Dev

R:随机抽样各种类别的观测值

来自分类Dev

R:随机抽样各种类别的观测值

来自分类Dev

如何随机抽样所有类别的数据?

来自分类Dev

如何在R中创建循环以重复随机采样过程

来自分类Dev

不同类别的随机抽样

来自分类Dev

SQL Server快速随机抽样

来自分类Dev

熊猫数据框随机抽样

来自分类Dev

如何在R中重复for循环n次?

来自分类Dev

按组随机抽样:如何指定n,而不是权重?(使用DataFrameGroupBy.sample)