我试过解决这个问题,但我做不到。 我在尝试确定金融学中的标准差,我的意思是:
Pr = Prob are equal [0.3, 0.4, 0.3]
r = Return are equal [0.10 ,0.05, 0.30]
所以,首先我计算我的平均值
^{pr2}$其次,计算我的方差:
Var = 0.3*(0.1-0.14)^2 + 0.4*(0.05-0.14)^2 + 0.3*(0.3 - 0.14)^2 = 0.0114
第三,我的标准差是
Var^(1/2) = 0.10677078 rounded to 0.10677
在Python中,我尝试过使用基本的arhitmetic来解决问题,但我做不到。 我的代码是:
import math
def dev_stan(prob, ret):
Pro = 0
Des_Stan = 0
Var = 0
for i in range(len(ret)):
Pro += prob[i]*ret[i]
Var += (ret[i] - Pro)**2*prob[i]
Des_Stan = (math.sqrt(Var))
return Des_Stan, Var, Pro, ret, prob
x = [0.30,0.4,0.30]
y = [0.10,0.05,0.30]
print(dev_stan(x,y))
这段代码的结果是:0.0956556
,但这不是答案。在
你的问题是试图计算平均值、方差和标准差,作为某种运行的总和,所有这些都是同时计算的。你不能用你在这里使用的那些特定的公式。正如你用手展示的,你先计算平均值,只有在你得到全部平均值之后,你才计算方差,然后在得到方差之后,你才计算标准差。你不能仅仅把方差公式应用到一个平均值上,然后希望事情会好起来。在
应该行得通。请注意,最后一个
Des_Stan
必须在for循环之外。如果你想计算平均值、方差和标准差的连续估计值,你必须使用不同的公式。在对于python中的数学计算,Numpy就是您想要的。在
相关问题 更多 >
编程相关推荐