【发布时间】:2023-04-11 02:04:01
【问题描述】:
我正在将方程式转换为 C++。这对于运行标准偏差是否正确。
this->runningStandardDeviation = (this->sumOfProcessedSquaredSamples - sumSquaredDividedBySampleCount) / (sampleCount - 1);
这是完整的功能:
void BM_Functions::standardDeviationForRunningSamples (float samples [], int sampleCount)
{
// update the running process samples count
this->totalSamplesProcessed += sampleCount;
// get the mean of the samples
double mean = meanForSamples(samples, sampleCount);
// sum the deviations
// sum the squared deviations
for (int i = 0; i < sampleCount; i++)
{
// update the deviation sum of processed samples
double deviation = samples[i] - mean;
this->sumOfProcessedSamples += deviation;
// update the squared deviations sum
double deviationSquared = deviation * deviation;
this->sumOfProcessedSquaredSamples += deviationSquared;
}
// get the sum squared
double sumSquared = this->sumOfProcessedSamples * this->sumOfProcessedSamples;
// get the sum/N
double sumSquaredDividedBySampleCount = sumSquared / this->totalSamplesProcessed;
this->runningStandardDeviation = sqrt((this->sumOfProcessedSquaredSamples - sumSquaredDividedBySampleCount) / (sampleCount - 1));
}
【问题讨论】:
-
sumOfProcessedSquaredSamples - sumSquaredDividedBySampleCount看起来很可疑,您能否添加一些 cmets 以显示您想要实现的目标以及每个变量的含义?谢谢。 -
另外,不应该有平方根吗?
-
谢谢,错过了平方根。为什么方程显示 σ * σ = ... 而不是 σ = sqrt(....) ?
-
σ * σ 是方差,比 sqrt 符号更容易写。
-
sumSquaredDividedBySampleCount = 偏差求和然后平方。除以样本数。
标签: c++ statistics