当前位置: 首页 > 知识库问答 >
问题:

从截断的正态分布中绘制出错误的R标准差

苗征
2023-03-14

我试着增加平局的数量--仍然导致sd在96左右。

 require(truncnorm)
 mean_old = -5425.078
 sd_old = 745.7254
 val = rtruncnorm(10000, a=0,  mean = mean_old, sd = sd_old)
 sd(val)
 sqrt(vtruncnorm( a=0,  mean = mean_old, sd = sd_old))

共有1个答案

西门安歌
2023-03-14

好的,我做了快速测试

require(truncnorm)

val = rtruncnorm(1000000, a=7.2,  mean = 0.0, sd = 1.0)
sd(val)
sqrt(vtruncnorm( a=7.2,  mean = 0.0, sd = 1.0))

正则截断高斯。在a=6时,它们非常接近,0.1554233 vs 0.1548865 f.e.取决于种子等。在a=7时,它们系统地不同,0.1358143 vs 0.1428084(函数调用时采样值较小)。我已经检查了Python实现

import numpy as np
from scipy.stats import truncnorm

a, b = 7.0, 100.0

mean, var, skew, kurt = truncnorm.stats(a, b, moments='mvsk')

print(np.sqrt(var))

r = truncnorm.rvs(a, b, size=100000)
print(np.sqrt(np.var(r)))

得到0.1428083662823426,与R vtruncnorm结果一致。如果a=7.2左右,结果就更糟了。

 类似资料:
  • 从平均值0.5和标准差0.1的正态分布中得出伪随机数。 既然如此,下面的Matlab代码是否等价于从一个在0处截断的正态分布在1处进行采样?

  • 我想生成一个截断的正态分布,其中任何一个R中都有已知的参数。注意,我不是在寻找伪随机数生成器。 假设I有一个均值为5,标准差为1的正态分布。我能画出一个截断正态分布的值吗,在点1和点10截断?

  • 在随机收集来自独立来源的数据中,通常观察到数据的分布是正常的。 这意味着,在绘制水平轴上的变量的值和垂直轴中的值的计数时,我们得到一个钟形曲线。 曲线的中心代表数据集的平均值。 在图中,百分之五十的值位于平均值的左侧,另外五十分之一位于图的右侧。 统称为正态分布。 R有四个内置函数来生成正态分布。它们在下面描述 - 以下是上述函数中使用的参数的描述 - x - 是数字的向量。 p - 是概率向量。

  • 我想用R随机构造自由度为5的卡方分布,有100个观测量。这样做之后,我想计算这些观测的平均值,并使用ggplot2用条形图绘制卡方分布。以下是我的代码: 首先,构造一个df=5,obs=100的随机卡方分布的数据帧。 但是,我得到的结果如下: 我被这个问题困了几个小时,在我的全局环境中找不到任何列表。如果有人能帮助我,给我一些建议,将不胜感激。

  • 标准正态分布的概率密度函数定义为e < sup >-x < sup > 2 /2 /√(2π)。这可以用简单的方式转换成C代码。单精度实现的示例可能是: 虽然此代码没有过早的下限溢位,但存在精度问题,因为计算2/2时产生的误差会被后续的幂运算放大。人们可以通过针对更高精度引用的测试轻松证明这一点。确切的误差将根据所使用的或实现的准确性而有所不同;对于忠实四舍五入的幂函数,人们通常会观察到IEEE-