下面你可以看到我的C#方法来计算每个点的布林带(移动平均线,上行带,下行带).
如您所见,此方法使用2 for循环来计算移动平均值的移动标准偏差.它曾经包含一个额外的循环来计算过去n个时期的移动平均值.我可以通过在循环开始时将新的点值添加到total_average并删除循环结束时的i-n点值来删除.
我现在的问题基本上是:我可以用移动平均线管理的类似方式删除剩余的内部循环吗?
public static void AddBollingerBands(SortedList<DateTime, Dictionary<string, double>> data, int period, int factor)
{
double total_average = 0;
for (int i = 0; i < data.Count(); i++)
{
total_average += data.Values[i]["close"];
if (i >= period - 1)
{
double total_bollinger = 0;
double average = total_average / period;
for (int x = i; x > (i - period); x--)
{
total_bollinger += Math.Pow(data.Values[x]["close"] - average, 2);
}
double stdev = Math.Sqrt(total_bollinger / period);
data.Values[i]["bollinger_average"] = average;
data.Values[i]["bollinger_top"] = …Run Code Online (Sandbox Code Playgroud) 当使用rnorm(或runif等)在R中生成随机数时,它们很少具有精确的均值和SD作为它们的采样分布.是否有任何简单的一线或二线为我这样做?作为一个初步的解决方案,我已经创建了这个函数,但它似乎应该是R或某个包的本机.
# Draw sample from normal distribution with guaranteed fixed mean and sd
rnorm_fixed = function(n, mu=0, sigma=1) {
x = rnorm(n) # from standard normal distribution
x = sigma * x / sd(x) # scale to desired SD
x = x - mean(x) + mu # center around desired mean
return(x)
}
Run Code Online (Sandbox Code Playgroud)
为了显示:
x = rnorm(n=20, mean=5, sd=10)
mean(x) # is e.g. 6.813...
sd(x) # is e.g. 10.222...
x = rnorm_fixed(n=20, mean=5, sd=10)
mean(x) # …Run Code Online (Sandbox Code Playgroud) 因此,请遵循匹配包中的示例,特别是GenMatch示例.这是从前一个问题继续
按照中的例子 GenMatch
library(Matching)
data(lalonde)
attach(lalonde)
X = cbind(age, educ, black, hisp, married, nodegr, u74, u75, re75, re74)
BalanceMat <- cbind(age, educ, black, hisp, married, nodegr, u74, u75, re75, re74,
I(re74*re75))
genout <- GenMatch(Tr=treat, X=X, BalanceMatrix=BalanceMat, estimand="ATE", M=1,
pop.size=16, max.generations=10, wait.generations=1)
genout$matches
genout$ecaliper
Y=re78/1000
mout <- Match(Y=Y, Tr=treat, X=X, Weight.matrix=genout)
summary(mout)
Run Code Online (Sandbox Code Playgroud)
我们看到185个治疗观察与270个非治疗观察配对.
我们可以通过以下方式生成一个表格,其中包含左侧的治疗病例及其年龄,以及右侧的对照病例和年龄:
pairs <- data.frame(mout$index.treated, lalonde$age[mout$index.treated], mout$index.control, lalonde$age[mout$index.control])
Run Code Online (Sandbox Code Playgroud)
现在,关于Weight.Matrix生成的文献GenMatch是非常神秘的,并没有解释这些值代表什么.我在这里有一个未解决的问题.现在假设我们想要放宽匹配,以便在年龄标准上进行更灵活的配对.
我们看到这sd(lalonde$age)为我们的数据提供了7年的SD.
所以我想要Weight.matrix解释这一点.我想对age变量使用1 SD的限制,因此返回比原始185-270更多的对.
我的猜测是生成第二个GenMatch函数,然后继续我的代码.所以我使用: …
我试图用PHP计算Z分数.基本上,我正在寻找最有效的方法来计算数据集(PHP数组)的平均值和标准差.有关如何在PHP中执行此操作的任何建议?
我试图以最少的步骤执行此操作.
我想用GSL(Gnu Scientific Lib)来计算数组的标准偏差. http://www.gnu.org/software/gsl/manual/html_node/Mean-and-standard-deviation-and-variance.html
在手册中,函数原型是gsl_stats_sd(const double data [],size_t stride,size_t n)
但是,我不太明白这里的"跨越"是什么.有人会知道它是什么吗?
非常感谢您的任何建议!
-阿尔弗雷德
我想在MATLAB中重现下图:

有两类具有X和Y坐标的点.我想用一个带有一个标准偏差参数的椭圆围绕每个类,它决定了椭圆沿轴线走多远.
这个图是用另一个软件创建的,我不太清楚它是如何计算椭圆的.
这是我用于此图的数据.第一列是第二列 - 第二列 - 第三列 - 第一列.我可以gscatter用来绘制点本身.
A = [
0 0.89287 1.54987
0 0.69933 1.81970
0 0.84022 1.28598
0 0.79523 1.16012
0 0.61266 1.12835
0 0.39950 0.37942
0 0.54807 1.66173
0 0.50882 1.43175
0 0.68840 1.58589
0 0.59572 1.29311
1 1.00787 1.09905
1 1.23724 0.98834
1 1.02175 0.67245
1 0.88458 0.36003
1 0.66582 1.22097
1 1.24408 0.59735
1 1.03421 0.88595
1 1.66279 0.84183
];
gscatter(A(:,2),A(:,3),A(:,1))
Run Code Online (Sandbox Code Playgroud)
仅供参考,这是关于如何绘制椭圆的SO问题.所以,我们只需知道绘制它的所有参数.
更新:
我同意可以将中心计算为X和Y坐标的平均值.可能我必须PRINCOMP对每个类使用主成分分析()来确定角度和形状.仍然在想...
我使用QuickCheck-2.5.1.1进行QA.我测试两个纯函数gold :: a -> Float
和f :: a -> Float,其中a实例随心所欲.
这gold是参考计算,f是我正在优化的变体.
到目前为止,我使用quickcheck的大多数测试都使用了类似的测试\a -> abs (gold a - f a) < 0.0001.
但是,我想收集统计数据并检查阈值,因为知道平均误差和标准偏差对指导我的设计很有用.
有没有办法使用QuickCheck来收集这样的统计数据?
为了给出我正在寻找的那种东西的具体例子,假设我有以下两个函数来近似平方根:
-- Heron's method
heron :: Float -> Float
heron x = heron' 5 1
where
heron' n est
| n > 0 = heron' (n-1) $ (est + (x/est)) / 2
| otherwise = est
-- Fifth order Maclaurin series expansion
maclaurin :: Float …Run Code Online (Sandbox Code Playgroud) 我需要在SQLite中使用标准偏差函数.我在这里找到一个:
http://www.sqlite.org/contrib?orderby=date
但它是SQLite的扩展文件的一部分.我以前从未安装过其中一种,我不知道该怎么做.我在http://www.sqlite.org/lang_corefunc.html找到了这个现有函数load_extension,但我不明白参数X和Y是什么.
基本上,我需要有人给我一个关于如何安装聚合扩展文件的分步指南.谁能这样做?
在给定数字向量的R中是否有一个函数,返回另一个向量,其中标准单位对应于每个值?
其中......标准单位:一个值是多少个SD +或 - 来自平均值
例:
x <- c(1,3,4,5,7) # note: mean = 4, sd = 2
foo(x)
[1] -1.5 -0.5 0.0 0.5 1.5
Run Code Online (Sandbox Code Playgroud)
这个(虚构的)"su"功能是否已包含在包中?
谢谢.
我把它扔到那里,希望有人会尝试过这种荒谬的事情.我的目标是接收输入图像,并根据每个像素周围的小窗口的标准偏差对其进行分割.基本上,这应该在数学上类似于高斯或盒式滤波器,因为它将应用于围绕每个像素的编译时(或甚至运行时)用户指定的窗口大小,并且目标阵列将包含每个像素处的SD信息,在与原始图像大小相同的图像中.
我们的想法是在HSV空间中的图像上执行此操作,以便我可以轻松找到均匀颜色的区域(即在Hue和Sat平面中具有小局部SD的区域)并从图像中提取它们以进行更深入的处理.
所以问题是,有没有人曾经建立过这样的自定义过滤器?我不知道如何在一个简单的盒式滤波器内核中使用SD,就像用于高斯和模糊的那样,所以我猜我必须使用FilterEngine结构.另外,我忘了提到我在C++中这样做.
非常感谢您的建议和思考.