这是我所做的:
accumulator_set<double, stats<tag::variance> > accumulator;
accumulator = for_each(x.begin(), x.end(), accumulator);
double sDeviation = sqrt(variance(accumulator));
Run Code Online (Sandbox Code Playgroud)
但返回的标准差是总体标准差。我需要样本标准偏差(除以 n-1)。
Boost 能做到吗?
我正在使用 Python 双端队列数据类型计算简单移动平均值,我想知道是否有办法让它将其视为某种数组并找到双端队列的标准偏差?
年龄前我有一个非常快速的仅整数标准偏差函数(在C中),它将返回"合理"准确的值,不使用除法或乘法,只需移位和加法.我已经失去了那些代码,谷歌一直无法帮助我找到类似的东西,而且我的离散数学技能有点太生疏了,无法重新推导出来.
在我的具体情况下,我有一个14位ADC值列表,我希望能够在没有浮点硬件的8位处理器上快速计算出"足够接近"的标准偏差.
这对任何人都响了吗?
我想计算从第一个观察到最后一个观察的一列中每4个值的标准偏差.我已经找到了许多移动SD功能的答案,但我只需要一行代码来计算sd()每4个数据值,并将答案写入数据框中的新列,如下所示:
示例数据:
Obs Count
1 56
2 29
3 66
4 62
5 49
6 12
7 65
8 81
9 73
10 66
11 71
12 59
Run Code Online (Sandbox Code Playgroud)
期望的输出:
Obs Count SD
1 56 16.68
2 29 16.68
3 66 16.68
4 62 16.68
5 49 29.55
6 12 29.55
7 65 29.55
8 81 29.55
9 73 6.24
10 66 6.24
11 71 6.24
12 59 6.24
Run Code Online (Sandbox Code Playgroud)
我尝试了以下代码,但这显然是不正确的:
a <- for(i in 1: length(df)) sd(df$Count[i:(i+3)])
Run Code Online (Sandbox Code Playgroud)
这应该是一项非常简单的任务,但我无法找到答案.我还在学习,任何帮助将不胜感激.
(添加了可重复的示例.)我对rnorm函数有点困惑.我预计mean(rnorm(100,mean=0,sd=1))会是0; 并且sd(rnorm(100,mean=0,sd=1))是1.但是给出了不同的结果.我哪里错了?
可重复的例子:
mean(rnorm(100,mean=0,sd=1))
# [1] 0.07872548
sd(rnorm(100,mean=0,sd=1))
# [1] 1.079348
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏.
我有一个大小为 (61964, 25) 的矩阵。这是一个示例:
array([[ 1., 0., 0., 4., 0., 1., 0., 0., 0., 0., 3.,
0., 2., 1., 0., 0., 3., 0., 3., 0., 14., 0.,
2., 0., 4.],
[ 0., 0., 0., 1., 2., 0., 0., 0., 0., 0., 1.,
0., 2., 0., 0., 0., 0., 0., 0., 0., 5., 0.,
0., 0., 1.]])
Run Code Online (Sandbox Code Playgroud)
Scikit-learn 提供了一个有用的函数,前提是我们的数据呈正态分布:
from sklearn import preprocessing
X_2 = preprocessing.scale(X[:, :3])
Run Code Online (Sandbox Code Playgroud)
然而,我的问题是我必须按行进行工作 - 这不仅仅包含 25 个观察值 - 因此正态分布在这里不适用。解决方案是使用 t 分布,但如何在 Python 中做到这一点?
通常,值从 0 到 …
我想有标准偏差的std.m文件.它在数据有趣的工具箱中,但是,错误地,我更改了代码,std命令不再起作用.如何运行原始std(标准偏差)命令?
我在这里询问并已经得到了关于averageifs excel函数 的答案。但是,我也想知道是否可以在新列中获得相同数据集的标准差。 这是示例数据的屏幕截图:
作为我研究的一部分,我从对数正态分布中测量绘制的均值和标准差.给定基础正态分布的值,应该可以分析预测这些量(如https://en.wikipedia.org/wiki/Log-normal_distribution所示).
但是,如下图所示,情况似乎并非如此.第一个图显示对数正态数据相对于高斯西格玛的平均值,而第二个图显示对数正态数据的西格玛与高斯的西格玛.显然,"计算"线非常显着地偏离"分析"线.
我将高斯分布的均值与sigma相关联,mu = -0.5*sigma**2因为这确保了对数正态场应该具有1的均值.注意,这是由我工作的物理领域的动机:与分析值的偏差仍然如果设置mu=0.0为例,则会发生.
通过复制和粘贴问题底部的代码,应该可以重现下面的图表.任何关于可能导致这种情况的建议都将不胜感激!
注意,为了生成上面的图,我使用了N=10000,但是N=1000为了速度已经输入了下面的代码.
import numpy as np
import matplotlib.pyplot as plt
mean_calc = []
sigma_calc = []
mean_analytic = []
sigma_analytic = []
ss = np.linspace(1.0,10.0,46)
N = 1000
for s in ss:
mu = -0.5*s*s
ln = np.random.lognormal(mean=mu, sigma=s, size=(N,N))
mean_calc += [np.average(ln)]
sigma_calc += [np.std(ln)]
mean_analytic += [np.exp(mu+0.5*s*s)]
sigma_analytic += [np.sqrt((np.exp(s**2)-1)*(np.exp(2*mu + s*s)))]
plt.loglog(ss,mean_calc,label='calculated')
plt.loglog(ss,mean_analytic,label='analytic')
plt.legend();plt.grid()
plt.xlabel(r'$\sigma_G$')
plt.ylabel(r'$\mu_{LN}$')
plt.show()
plt.loglog(ss,sigma_calc,label='calculated') …Run Code Online (Sandbox Code Playgroud) 我已按照此处列出的建议计算循环数据的平均值:
https://en.wikipedia.org/wiki/Mean_of_circular_quantities
但我也想计算标准偏差。
#A vector of directional data (separated by 20 degrees each)
Dir2<-c(350,20,40)
#Degrees to Radians
D2R<-0.0174532925
#Radians to Degrees
Rad2<-Dir2 * D2R
Sin2<-sin(Rad2)
SinAvg<-mean(Sin2)
Cos2<-cos(Rad2)
CosAvg<-mean(Cos2)
RADAVG<-atan2(SinAvg, CosAvg)
DirAvg<-RADAVG * R2D
Run Code Online (Sandbox Code Playgroud)
以上给了我平均值,但我不知道如何计算 SD
我试图只取正弦和余弦的标准偏差的平均值,但我得到了不同的答案。
SinSD<-sd(Sin2)
CosSD<-sd(Cos2)
mean(CosSD, SinSD)
Run Code Online (Sandbox Code Playgroud)