数学不是我的强项,我在这里不知所措。
基本上,我所需要的只是一个简单的公式,它可以给出 1 到 5 的加权评级。如果票数很少,它们的影响力较小,并且评级更趋向于平均值(在这种情况下,我希望它是为 3,而不是所有其他评分的平均值)。
我尝试了一些不同的贝叶斯实现,但这些都没有解决。我相信我正在寻找的图形表示可以显示为:
___
/
___/
Run Code Online (Sandbox Code Playgroud)
干杯
在存储日志记录时,我想总结一些不同类别的移动平均值.想象一下,一次保存一个条目的Web服务器日志的服务.让我们进一步想象一下,我们无法访问记录的记录.所以我们一次看到它们,但以后无法访问它们.
对于不同的页面,我想知道
是否有任何聪明的算法/数据模型可以保存这些移动平均线而无需通过总结大量数据来重新计算它们?
我不需要精确的平均值(恰好30天左右),只需要趋势指标.所以一些模糊不是一个问题.它应该确保新条目的权重高于旧条目.
一种解决方案可能是自动创建每个月的统计记录.但是,我甚至不需要过去一个月的统计数据,所以这看起来有点矫枉过正.并且它不会给我一个移动平均线,而是每个月交换新值.
我有一个数据集,每个观察都有权重,我想准备加权摘要,groupby但是生锈了如何最好地做到这一点.我认为这意味着自定义聚合功能.我的问题是如何正确处理不是逐项数据,而是分组数据.也许这意味着最好是分步而不是一步到位.
在伪代码中,我正在寻找
#first, calculate weighted value
for each row:
weighted jobs = weight * jobs
#then, for each city, sum these weights and divide by the count (sum of weights)
for each city:
sum(weighted jobs)/sum(weight)
Run Code Online (Sandbox Code Playgroud)
我不知道如何处理"为每个城市" - 分成自定义聚合函数并访问组级摘要.
模拟数据:
import pandas as pd
import numpy as np
np.random.seed(43)
## prep mock data
N = 100
industry = ['utilities','sales','real estate','finance']
city = ['sf','san mateo','oakland']
weight = np.random.randint(low=5,high=40,size=N)
jobs = np.random.randint(low=1,high=20,size=N)
ind = np.random.choice(industry, N)
cty = np.random.choice(city, N)
df_city …Run Code Online (Sandbox Code Playgroud) 我试图对某个加权和进行矢量化,但却无法弄清楚如何去做.我在下面创建了一个简单的最小工作示例.我想这个解决方案涉及bsxfun或reshape和kronecker产品,但我仍然没有设法让它工作.
rng(1);
N = 200;
T1 = 5;
T2 = 7;
T3 = 10;
A = rand(N,T1,T2,T3);
w1 = rand(T1,1);
w2 = rand(T2,1);
w3 = rand(T3,1);
B = zeros(N,1);
for i = 1:N
for j1=1:T1
for j2=1:T2
for j3=1:T3
B(i) = B(i) + w1(j1) * w2(j2) * w3(j3) * A(i,j1,j2,j3);
end
end
end
end
A = B;
Run Code Online (Sandbox Code Playgroud)
对于二维情况下,有一个聪明的答案在这里.
我想计算 PHP 中的 EMA(指数移动平均线)值。
我试过下面的代码,但它给了我 500 错误。
$real = array(12,15,17,19,21,25,28,12,15,16);
$timePeriod = 3;
$data = trader_ema($real,$timePeriod);
var_dump($data);
Run Code Online (Sandbox Code Playgroud)
PHP:EMA计算函数trader-ema
尝试了很长时间的谷歌搜索,但在 PHP 中没有得到任何帮助。所以,我不知道需要做什么来计算 EMA 值。
编辑 1:已安装的扩展
我已经安装了所有必要的扩展,现在我得到了输出。但它似乎没有给出适当的输出。
我认为用于计算 EMA 的 PHP 函数无法正常工作。在这方面的任何帮助将不胜感激。
我计算简单的移动平均线:
def sma(data_frame, length=15):
# TODO: Be sure about default values of length.
smas = data_frame.Close.rolling(window=length, center=False).mean()
return smas
Run Code Online (Sandbox Code Playgroud)
使用滚动函数可以计算加权移动平均值吗?正如我在文档中看到的那样,我认为我必须传递win_type参数.但我不确定我必须选择哪一个.
这是加权移动平均线的定义.
提前致谢,
python weighted-average moving-average pandas technical-indicator
我在Pandas DataFrame中有一个时间序列.时间戳可能不均匀(每1-5分钟一个),但总会有一个每5分钟一次(时间戳以分钟结尾于0,5,10,15,20,25,30,35,40,45,50 ,55).
例:
2017-01-01 2:05:00 32.90
2017-01-01 2:07:30 29.83
2017-01-01 2:10:00 45.76
2017-01-01 2:15:00 16.22
2017-01-01 2:20:00 17.33
2017-01-01 2:25:00 23.40
2017-01-01 2:28:45 150.12
2017-01-01 2:30:00 100.29
2017-01-01 2:35:00 38.45
2017-01-01 2:40:00 67.12
2017-01-01 2:45:00 20.00
2017-01-01 2:50:00 58.41
2017-01-01 2:55:00 58.32
2017-01-01 3:00:00 59.89
Run Code Online (Sandbox Code Playgroud)
我想获得15分钟的时间加权平均值.带有时间戳的行直接在15分钟标记(时间戳以分钟结尾于0,15,30,45)结束一个间隔,因此分组如下:
Group 1 (interval 2017-01-01 2:00:00):
2017-01-01 2:05:00 32.90
2017-01-01 2:07:30 29.83
2017-01-01 2:10:00 45.76
2017-01-01 2:15:00 16.22
Group 2 (interval 2017-01-01 2:15:00):
2017-01-01 2:20:00 17.33
2017-01-01 2:25:00 23.40
2017-01-01 2:28:45 150.12
2017-01-01 2:30:00 …Run Code Online (Sandbox Code Playgroud) 假设我在R中有这个data.frame:
ages <- data.frame(Indiv = numeric(),
Age = numeric(),
W = numeric())
ages[1,] <- c(1,10,2)
ages[2,] <- c(1,15,5)
ages[3,] <- c(2,5,1)
ages[4,] <- c(2,100,2)
ages
Indiv Age W
1 1 10 2
2 1 15 5
3 2 5 1
4 2 100 2
Run Code Online (Sandbox Code Playgroud)
如果我做:
meanAge <- aggregate(ages$Age,list(ages$Indiv),mean)
Run Code Online (Sandbox Code Playgroud)
我得到每个Indiv(Group.1)的平均年龄(x):
Group.1 x
1 1 12.5
2 2 52.5
Run Code Online (Sandbox Code Playgroud)
但我想计算年龄的加权算术平均值(权重为W).如果我做:
WmeanAge <- aggregate(ages$Age,list(ages$Indiv),weighted.mean,ages$W)
Run Code Online (Sandbox Code Playgroud)
我明白了:
Error in weighted.mean.default(X[[1L]], ...) :
'x' and 'w' must have the same length
Run Code Online (Sandbox Code Playgroud)
我想我应该:
Group.1 x
1 1 …Run Code Online (Sandbox Code Playgroud) 依据如下数据表:
library(data.table)
dt <- data.table(Position = 1:3, Price = c(50, 45, 40), Volume = c(10, 10, 10))
dt
Position Price Volume
1: 1 50 10
2: 2 45 10
3: 3 40 10
Run Code Online (Sandbox Code Playgroud)
现在我想计算每个头寸的加权平均值,同时考虑到"<="当前头寸的所有头寸。结果应该是:
dt[, Vwa := c(50, 47.5, 45)]
dt
Position Price Volume Vwa
1: 1 50 10 50.0
2: 2 45 10 47.5
3: 3 40 10 45.0
Run Code Online (Sandbox Code Playgroud)
知道如何有效地实现这一目标吗?
I'm trying to get average stock prices from a dynamic list.
In my example, I've made a bought stocks in a few different days. And I've sold some of them (not all). So, I have some stocks available that I want to find out the average price:
How to get an average price from stocks not sold, from the earlier to the latest date without changing manually the list?
Manually, the result must be: $19,82
I've built an example sheet …
weighted-average ×10
pandas ×3
python ×3
algorithm ×2
r ×2
accumulate ×1
aggregate ×1
bayesian ×1
data.table ×1
exponential ×1
group-by ×1
math ×1
matlab ×1
php ×1
statistics ×1
stock ×1
time-series ×1
timestamp ×1