首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中循环的累加和和标准差

Python中循环的累加和和标准差
EN

Stack Overflow用户
提问于 2018-05-01 06:00:35
回答 2查看 597关注 0票数 0

我试过解决这个问题,但我做不到。我在金融学中尝试确定标准差,我的意思是:

代码语言:javascript
复制
Pr = Prob are equal [0.3, 0.4, 0.3]
r = Return are equal [0.10 ,0.05, 0.30]

所以,首先我计算我的平均值

代码语言:javascript
复制
E(r) = 0.10*0.3 + 0.4*0.05 + 0.3*0.3 = 0.14

第二,计算我的方差:

代码语言:javascript
复制
Var = 0.3*(0.1-0.14)^2 + 0.4*(0.05-0.14)^2 + 0.3*(0.3 - 0.14)^2 = 0.0114

第三,我的标准差是

代码语言:javascript
复制
Var^(1/2) = 0.10677078 rounded  to 0.10677

在Python中,我尝试过使用基本的arhitmetic来求解,但是我做不到。我的代码是:

代码语言:javascript
复制
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,但这不是答案。

EN

回答 2

Stack Overflow用户

发布于 2018-05-01 06:16:55

你的问题是试图计算均值、方差和标准差,作为某种形式的运行总数,所有这些都是同时计算的。您不能使用这里使用的那些特定公式来实现此目的。正如你手工展示的,你首先计算均值,只有在你得到全部均值之后,你才计算方差,然后只有在得到方差之后,你才计算标准差。你不能仅仅将方差公式应用于均值的一部分,然后希望事情能正常进行。

代码语言:javascript
复制
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]
    for i in range(len(ret)):
        Var += (ret[i] - Pro)**2*prob[i]  
    Des_Stan = (math.sqrt(Var))
return Des_Stan, Var, Pro, ret, prob

应该行得通。注意,最终的Des_Stan必须在for循环之外。如果您想要计算平均值、方差和标准差的运行估计值,则必须使用不同的公式。

票数 0
EN

Stack Overflow用户

发布于 2018-07-31 11:26:25

对于python中的数学计算,Numpy是您想要的。

代码语言:javascript
复制
import numpy as np

def dev_stan(x, y):
    mean = x.dot(y)
    var = np.sum(x * (y - mean) ** 2)    
    std = np.sqrt(var)
    return mean, var, std, x, y

x = np.array([0.30,0.4,0.30])
y = np.array([0.10,0.05,0.30])
print(dev_stan(x,y))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50108800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档