gpt4 book ai didi

rnorm 正在生成非随机外观实现

转载 作者:行者123 更新时间:2023-12-04 11:14:01 25 4
gpt4 key购买 nike

我正在调试我的模拟,我发现当我运行 rnorm() 时,我的随机法线值对我来说根本不是随机的。 ccc 是参数化给出的平均 sd 向量。我怎样才能获得真正随机的正常实现?由于我的原始模拟很长,我不想进入 Gibbs 采样...你知道为什么我得到正常随机变量的非随机实现吗?

> ccc  
# [1] 144.66667 52.52671

> rnorm(20, ccc)
# [1] 144.72325 52.31605 144.44628 53.07380 144.64438 53.87741 144.91300 54.06928 144.76440
# [10] 52.09181 144.61817 52.17339 145.01374 53.38597 145.51335 52.37353 143.02516 52.49332
# [19] 144.27616 54.22477

> rnorm(20, ccc)
# [1] 143.88539 52.42435 145.24666 50.94785 146.10255 51.59644 144.04244 51.78682 144.70936
# [10] 53.51048 143.63903 51.25484 143.83508 52.94973 145.53776 51.93892 144.14925 52.35716
# [19] 144.08803 53.34002

最佳答案

在函数中设置参数是一个基本概念。以rnorm()为例:

它的结构是rnorm(n, mean = 0, sd = 1)。显然,meansd 是两个不同的参数,因此您需要为它们分别赋值。这是一个你可能会卡住的令人困惑的情况:

arg <- c(5, 10)
rnorm(1000, arg)

这实际上意味着 rnorm(n = 1000, mean = c(5, 10), sd = 1)。标准偏差设置为 1 是因为 arg 的位置代表参数 mean 而您没有另外设置 sd。因此,rnorm() 将取默认值 1 到 sd。但是,mean = c(5, 10) 是什么意思?让我们检查一下:

x <- rnorm(1000, arg)
hist(x, breaks = 50, prob = TRUE)
# lines(density(x), col = 2, lwd = 2)

enter image description here

mean = c(5, 10)sd = 1 将循环到长度 1000,即

rnorm(n = 1000, mean = c(5, 10, 5, 10, ...), sd = c(1, 1, 1, 1, ...))

因此最终样本 x 实际上是 500 个 N(5, 1) 样本和 500 个 N(10, 1) 交替绘制的样本,即

c(rnorm(1, 5, 1), rnorm(1, 10, 1), rnorm(1, 5, 1), rnorm(1, 10, 1), ...)

至于你的问题,应该是:

arg <- c(5, 10)
rnorm(1000, arg[1], arg[2])

这意味着 rnorm(n = 1000, mean = 5, sd = 10)。再次检查,您将获得 mean = 5sd = 10 的正态分布。

x <- rnorm(1000, arg[1], arg[2])
hist(x, breaks = 50, prob = T)
# curve(dnorm(x, arg[1], arg[2]), col = 2, lwd = 2, add = T)

enter image description here

关于rnorm 正在生成非随机外观实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54720071/

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