【发布时间】:2018-09-01 00:46:08
【问题描述】:
我正在尝试创建两个矩阵,一个可以用 0 和 0.25 填充,另一个可以用 0 和 1 填充。
vector <- c()
for(i in 1:1000){
dummy_qt <- as.data.frame(matrix(sample(c(0, 0.25), 44, replace = TRUE), 4, 11))
colnames(dummy_qt) <- c(2005:2015)
boot_qt <- dummy_qt %>%
summarise_all(funs(sum)) %>%
sum()/11
dummy_y <- as.data.frame(matrix(sample(c(0, 1), 44, replace = TRUE), 4, 11))
colnames(dummy_y) <- c(2005:2015)
boot_y <- dummy_y %>%
mutate(sumrow = rowSums(.)/11) %>%
select(sumrow) %>%
sum()
qt_y <- sum(boot_qt, boot_y)
vector[i] <- qt_y
}
创建矩阵后,我运行一个数学公式,并将其放入一个向量中。但是,我知道矩阵 dummy_qt 可以得到的最大值是 1,而 dummy_y 是 4,如果矩阵内的所有值对于第一个矩阵为 0.25,对于第二个矩阵为 1,则最终结果为 5。
例如:
dummy_qt <- as.data.frame(matrix(0.25, 4, 11))
dummy_y <- as.data.frame(matrix(1, 4, 11))
boot_qt <- dummy_qt %>%
summarise_all(funs(sum)) %>%
sum()/11
boot_y <- dummy_y %>%
mutate(sumrow = rowSums(.)/11) %>%
select(sumrow) %>%
sum()
qt_y <- sum(boot_qt, boot_y)
每当我运行它时,通常直方图显示我只得到 0 到 3.25 之间的值,这并不能反映现实。这么说,我想知道出了什么问题,因为它们应该在 0 和 5 之间变化。
【问题讨论】:
-
我不太清楚你的问题是什么。使用
set.seed(42)运行上面的示例,我得到了这些分位数1.636364 2.295455 2.500000 2.727273 3.386364。为什么您会期望这些值达到极端? -
@Val 如果您查看我的第二个代码示例,其中一个矩阵的所有值都是 0.25,而另一个矩阵的所有值都是 1,那么我希望它是 5。
-
但是您专门将其设置为所有
0.25或所有1...随机抽样(如您上面的示例)发生的机会非常低......所以如果你至少有一个不同的值,它不能是 0 或 5 -
问题是,尽管知道采样到那个极端的机会很低,但我仍然希望它偶尔会更高一点。我遇到的问题是,由于这反映了一个真实的案例场景,我们确实经常看到等于 5 的值,我不确定如何验证它。但可能这是一个统计问题,而不是编码问题。我只是想知道是否有任何编码选项可以获得更多的极端值。
-
听起来像是一个统计问题......也许你的真实案例场景并不那么随机。使用
sample,您可以设置概率,但这无助于更频繁地获得两个极端
标签: r matrix random statistics