R 检测数字序列中的间隙是随机的还是连续的

R 检测数字序列中的间隙是随机的还是连续的,r,vector,random,gaps-and-islands,R,Vector,Random,Gaps And Islands,我有许多数值数据向量,其中一些包含间隙。我必须检测这些间隙是连续的还是在每个向量中或多或少随机分布的。类似的例子如下: # Let's create a couple of data vectors x <- runif(1000) y <- runif(1000) # Let's add some NAs at random to x x[sample(c(1:1000), 100, replace = F)] <- NA # Let's add some continuo

我有许多数值数据向量,其中一些包含间隙。我必须检测这些间隙是连续的还是在每个向量中或多或少随机分布的。类似的例子如下:

# Let's create a couple of data vectors
x <- runif(1000)
y <- runif(1000)

# Let's add some NAs at random to x
x[sample(c(1:1000), 100, replace = F)] <- NA
# Let's add some continuous NAs to y
y[c(251:350)] <- NA

# And get the respective summaries
summary(x)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
0.00294 0.24446 0.51441 0.50535 0.76200 0.99850     100 
summary(y)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
0.00325 0.22178 0.47765 0.48207 0.73380 0.99969     100
也就是说,x和y都有相同数量的间隙,但在x中这些间隙沿向量随机分布,而在y中它们是聚合的。
我必须检测到这一点,有什么想法吗?

将其转换为TIBLE,然后查看NA行号的标准偏差

library(tidyverse)
myt <- tibble(X = x, Y = y) %>%  
  rowid_to_column("LINE") 

myt %>% 
  filter(is.na(X)) %>% 
  pull(LINE) %>% 
  sd()
# [1] 300.2694
myt %>% 
  filter(is.na(Y)) %>% 
  pull(LINE) %>% 
  sd()
# [1] 29.01149


将其转换为TIBLE,然后查看NA行号的标准偏差

library(tidyverse)
myt <- tibble(X = x, Y = y) %>%  
  rowid_to_column("LINE") 

myt %>% 
  filter(is.na(X)) %>% 
  pull(LINE) %>% 
  sd()
# [1] 300.2694
myt %>% 
  filter(is.na(Y)) %>% 
  pull(LINE) %>% 
  sd()
# [1] 29.01149


文章中对连续或分布式的定义并不十分清楚

这里有一个函数,如果至少有一系列NA值大于n的长度,则返回TRUE


文章中对连续或分布式的定义并不十分清楚

这里有一个函数,如果至少有一系列NA值大于n的长度,则返回TRUE


这实际上是一个统计问题,如何检测子集是否是随机的。我建议将其移动到stats.stackexchange.com这实际上是一个统计问题,如何检测子集是否是随机的。我建议将其移至stats.stackexchange.com