gpt4 book ai didi

r - 为什么 R 'sample' 某些列比其他列多?

转载 作者:行者123 更新时间:2023-12-01 11:16:50 24 4
gpt4 key购买 nike

我正在测试缺失数据对回归分析的影响。因此,使用模拟数据集,我想从一组指定的列中随机删除一部分观察值(不是整行)。我正在使用“示例”来执行此操作。不幸的是,这使得某些列的缺失值比其他列多得多。请参见下面的示例:

#Data frame with 5 columns, 10 rows
DF = data.frame(A = paste(letters[1:10]),B = rnorm(10, 1, 10), C = rnorm(10, 1, 10), D = rnorm(10, 1, 10), E = rnorm(10,1,10))

#Function to randomly delete a proportion (ProportionRemove) of records per column, for a designated set of columns (ColumnStart - ColumnEnd)
RandomSample = function(DataFrame,ColumnStart, ColumnEnd,ProportionRemove){
#ci is the opposite of the proportion
ci = 1-ProportionRemove
Missing = sapply(DataFrame[(ColumnStart:ColumnEnd)], function(x) x[sample(c(TRUE, NA), prob = c(ci,ProportionRemove), size = length(DataFrame), replace = TRUE)])}

#Randomly sample column 2 - 5 within DF, deleting 80% of the observation per column
Test = RandomSample(DF, 2, 5, 0.8)

我知道这有一个随机因素,但在 10 次试验(10*4 = 40 列)中,17 列没有数据,而在一次试验中,一列仍然有 6 条记录(而不是预计 ~2) - 见下文。

       B         C         D  E
[1,] NA 24.004402 7.201558 NA
[2,] NA NA NA NA
[3,] NA 4.029659 NA NA
[4,] NA NA NA NA
[5,] NA 29.377632 NA NA
[6,] NA 3.340918 -2.131747 NA
[7,] NA NA NA NA
[8,] NA 15.967318 NA NA
[9,] NA NA NA NA
[10,] NA -8.078221 NA NA

总而言之,我想在每列中用 NA 替换一定比例的观察值。

非常感谢任何帮助!!!

最佳答案

这对我来说很有意义。正如@Frank 所建议的(在一条已被删除的评论中......*叹息*),“随机性”可以给你真正非随机的结果(Dilbert: Tour of Accounting, 2001-10-25)。

如果您想要具有保证比率的随机样本,试试这个:

guaranteedSampling <- function(DataFrame, ProportionRemove) {
n <- max(1L, floor(nrow(DataFrame) * ProportionRemove))
inds <- replicate(ncol(DataFrame), sample(nrow(DataFrame), size=n), simplify=FALSE)
DataFrame[] <- mapply(`[<-`, DataFrame, inds, MoreArgs=list(NA), SIMPLIFY=FALSE)
DataFrame
}

set.seed(2)
guaranteedSampling(DF[2:5], 0.8)
# B C D E
# 1 NA NA NA NA
# 2 NA NA NA NA
# 3 NA NA NA NA
# 4 6.792463 10.582938 NA NA
# 5 NA NA -0.612816 NA
# 6 NA -2.278758 NA NA
# 7 NA NA NA 2.245884
# 8 NA NA NA 5.993387
# 9 7.863310 NA 9.042127 NA
# 10 NA NA NA NA

关于r - 为什么 R 'sample' 某些列比其他列多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49758309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com