gpt4 book ai didi

r - 在 R 中生成随机序列和绘图

转载 作者:行者123 更新时间:2023-12-04 11:31:06 26 4
gpt4 key购买 nike

我想生成一个由 3000 个点组成的随机序列,它遵循正态分布。平均值为 c,标准差为 d。但我希望这 3000 点在 [a,b] 的范围内。

你能告诉我如何在R中做到这一点吗?

如果我想绘制这个序列,如果Y轴使用生成的3000个点,那么我应该如何生成对应于X轴的点。

最佳答案

您可以使用以下标准 R 函数执行此操作:

c <- 1
d <- 2

a <- -2
b <- 3.5

ll <- pnorm(a, c, d)
ul <- pnorm(b, c, d)

x <- qnorm( runif(3000, ll, ul), c, d )
hist(x)
range(x)
mean(x)
sd(x)
plot(x, type='l')

pnorm 函数用于找到用于均匀分布的限制,然后从均匀分布生成数据,然后将其转换回法线。

使用 distr 包更简单:
library(distr)

N <- Norm(c,d)
N2 <- Truncate(N, lower=a, upper=b)

plot(N2)
x <- r(N2)(3000)
hist(x)
range(x)
mean(x)
sd(x)
plot(x, type='l')

请注意,在这两种情况下,均值不是 c,sd 不是 d。如果您希望得到的截断数据的均值和 sd 为 c 和 d,那么您需要父分布(截断前)具有不同的值(更高的 sd,均值取决于截断值),找到这些值将是一个数学/统计理论类(class)的好作业问题。如果这是您真正需要的,请添加评论或编辑问题以具体说明。

如果您想从未截断的法线生成数据,但只绘制 [a,b] 范围内的数据,则只需使用 ylim 参数进行绘制:
plot( rnorm(3000, c, d), ylim=c(a,b) )

关于r - 在 R 中生成随机序列和绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3570767/

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