【问题标题】:Generate a normally distributed data from a base data [closed]从基础数据生成正态分布数据[关闭]
【发布时间】:2019-08-05 02:23:59
【问题描述】:

我有一个看起来像这样的数据:

Hit
77.77
55.55
100
44.44

我需要使用上面给出的数据中的元素生成另一组数据。数据应该是正态分布的。我可以在excel中这样做吗?如果没有,我可以在 r 中这样做吗?是否有专门为此而设计的 R 函数? 在 R 的情况下,我使用了以下讨论中的建议: Generate data by using existing dataset as the base dataset PS:这是关于提出的解决方案的第一个答案和第二步。我没有删除重复项,并且我的基础数据中没有缺失值。

但问题是我得到的值与我的数据集不同。这不是我打算追求的目的。

【问题讨论】:

  • 我不确定我是否理解您要查找的内容。听起来您想从四个值中进行采样(从而避免“从我的数据集中获取不同的值”)。你如何协调这与“数据应该是正态分布的”?
  • 同意@JonSpring,请澄清。听起来你想要的东西是不可能的......
  • @JonSpring 这只是一个例子。我有包含 12 个数据观察的数据。我想做的是创建一个数据库,从这 12 个观察中采样观察。结果数据应以 N = 30 正态分布。当我遵循给定讨论中的解决方案时,结果数据集的值与我在基础数据库中的观察值不同。本质上,我正在尝试从现有数据集中进行随机抽样。

标签: r excel normal-distribution data-generation


【解决方案1】:

请参阅sample(),了解如何从向量中采样。例如,sample(Hit, 20, replace = T) 将通过从您的列表中选择给您一个长度为 30 的向量。数据本身不会是“正态分布的”,但如果您基于该数据重复一个加法过程,则可能会产生正态分布。

例如,给定这个向量:

Hit <- c(5, 10, 42, 2, 16, 19, 23, 4)

您可以绘制 30 个有放回的样本,并绘制直方图。这不是正态分布。

set.seed(42)
Hit_30 <- sample(Hit, 30, replace = T)
Hit_30
# [1]  4  4 42 23 19 16 19 10 19 19  2 19  4 42  2  4  4  5  2 16  4 10  4  4  5 16  2  4  2 23
hist(Hit_30)

如果我们根据这些数据重复一个加法过程,就会出现正态分布。例如,如果我们取 30 个样本的平均值,然后重复 10,000 次,则结果呈正态分布:

Hit_30sums <- replicate(10000, mean(sample(Hit, 30, replace = T)))
hist(Hit_30sums)

【讨论】:

  • 所以基本上为了产生一个正态分布的数据我需要增加数据的样本量?
  • 否;如果你从原始数据中抽取十亿次,它将具有与原始数据相同的值和分布。正是通过从该数据中随机添加样本,才会出现正态分布。例如,如果您取样本的总和或平均值,然后重复多次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-26
相关资源
最近更新 更多