r - 如何生成具有某个恒定均值、sd、总和的 N 个随机数?
问题描述
我在 R 中编写了以下代码,用于生成具有一定均值、标准偏差、总和的 N 个随机数。例如,
x <- rnorm(n=40, mean =0.030, sd=0.007, sum=1.182)
hist(x)
mean(x)
sd(x)
sum(x)
但给了我这个错误:
rnorm 中的错误(n = 40,mean = 0.03,sd = 0.007,sum = 1.182):未使用的参数(sum = 1.182)
> hist(x)
> mean(x)
[1] 0.05
> sd(x)
[1] 0.2180813
> sum(x)
[1] 40
如何在 R 中编写一个随机数总和等于 1.182 的代码?
解决方案
没有功能可以做到这一点(如果平均值或总和正是您指定的,它就不是真正的随机抽样,对吧?您正在从具有这些品质的分布中提取,但由于采样,每次拉动都会与这些数量有所不同错误),但你可以像这样强制它。运行一次,然后对其进行缩放以匹配所需的总和。
set.seed(42)
x <- rnorm(n=40, mean=0.030, sd=0.007)
sum(x)
#[1] 1.18893
x <- x * 1.182 / sum(x)
sum(x)
#[1] 1.182
推荐阅读
- npm - Angular 5:是否可以链接本地 npm 模块?
- dart - 如何在自定义按钮颤动中给 onPressed 一个方法
- testing - 无法在 VSTS 中创建新的测试计划
- swift - Blend Mode in Metal
- java - 如何减少内存分配?
- php - 找不到 Json 对象 php
- javascript - Visual Studio 2017 导出异步函数错误的红色突出显示
- python - 如何在不泛滥请求的情况下批量检查 URL 状态代码
- python - read.index() 似乎正在读取错误的索引?
- c# - Discord.net 事件仅调用第一个订阅者