【问题标题】:How to sample a normally distributed population with a set mean and standard deviation multiple times如何多次对具有设定均值和标准差的正态分布总体进行抽样
【发布时间】:2020-05-19 19:28:00
【问题描述】:

出于演示目的,我想从平均值为 0、标准差为 2 的正态分布中抽取 30 个随机观测值。我想对这个“总体”抽样 10 次,因此我将以 300 个观测值和 10 个观测值结束团体。以下代码有效,但它重复相同的数字。每次迭代时我都想要不同的数字。

samp<-rep(c(1:10),each = 30)
obs <- tibble(observations=rep(c(rnorm(30, mean = 0, sd=2)), times = 10))
data<-cbind(samp,obs)

我确实知道我只能对 300 个随机数进行抽样,但我想说明的重点是抽样总体。我怎样才能改变以前的代码来做到这一点?

我还想用误差线(使用标准差)绘制每个采样例程(使用ggplot2)的平均值,如下所示。有没有办法用下面的操作强制上述操作(或每次迭代产生不同数字的操作)并达到相同的结果?

results<-
  data%>%
  group_by(samp)%>%
  summarize(avg = mean(data$obs),
              stdev = sd(data$obs))

plot<- 
  ggplot(results, aes(x=samp, y=avg, group=samp, color=samp)) + 
  geom_line() +
  geom_point()+
  geom_errorbar(aes(ymin=avg-stdev, ymax=avg+stdev), width=.2,
                 position=position_dodge(0.05))
print(plot)

【问题讨论】:

  • 你可以使用n &lt;- 10;replicate(n, rnorm(30, mean = 0, sd=2), simplify = FALSE)
  • 示例中的data是什么
  • 抱歉,我忘了添加第三行代码。我为未来的观众更正了

标签: r ggplot2 plot random iteration


【解决方案1】:

这是构建示例数据框的一种方法:

library(tidyverse)

s <- function() rnorm(30, mean = 0, sd = 2)

df <- map_df(1:10, ~tibble(val = s(), grp = letters[.x]))

要绘图,您无需提前计算平均值:

df %>% 
  ggplot(aes(grp, val)) +
  stat_summary(fun.y = mean, geom = "point") +
  stat_summary(fun.data = mean_se, geom = "linerange")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    • 2021-09-16
    相关资源
    最近更新 更多