我有几个加权值,我正在加权平均值.我想使用加权值和加权平均值来计算加权标准差.如何修改典型标准偏差以包括每次测量的权重?
这是我正在使用的标准差公式.

当我只使用' x '的每个加权值和'\ bar { x }' 的加权平均值时,结果似乎小于它应该的值.
我有4个具有已知手段和标准偏差的人群.我想知道伟大的意思和伟大的sd.平均值显然很容易计算,但R有一个方便的效用函数weighted.mean().是否存在组合标准偏差的类似功能?
计算并不复杂,但现有的功能可以使我的代码更清晰,更容易理解.
奖金问题,你用什么工具来搜索这样的功能?我知道它必须在那里,但我做了很多搜索,但找不到它.谢谢!
我想使用一个快速给出矢量广告标准偏差的函数,允许我在矢量中包含元素的权重.即
sd(c(1,2,3)) #weights all equal 1
#[1] 1
sd(c(1,2,3,3,3)) #weights equal 1,1,3 respectively
#[1] 0.8944272
Run Code Online (Sandbox Code Playgroud)
为加权装置I可以使用wt.mean()从library(SDMTools)例如
> mean(c(1,2,3))
[1] 2
> wt.mean(c(1,2,3),c(1,1,1))
[1] 2
>
> mean(c(1,2,3,3,3))
[1] 2.4
> wt.mean(c(1,2,3),c(1,1,3))
[1] 2.4
Run Code Online (Sandbox Code Playgroud)
但wt.sd功能似乎没有提供我想要的东西:
> sd(c(1,2,3))
[1] 1
> wt.sd(c(1,2,3),c(1,1,1))
[1] 1
> sd(c(1,2,3,3,3))
[1] 0.8944272
> wt.sd(c(1,2,3),c(1,1,3))
[1] 1.069045
Run Code Online (Sandbox Code Playgroud)
我期待一个0.8944272从我加权返回的函数sd.我最好在data.frame上使用它,如:
data.frame(x=c(1,2,3),w=c(1,1,3))
Run Code Online (Sandbox Code Playgroud) 说,我有一个数组:
import numpy as np
x = np.array([0, 1, 2, 5, 6, 7, 8, 8, 8, 10, 29, 32, 45])
Run Code Online (Sandbox Code Playgroud)
如何计算它的第三个标准偏差,所以我可以得到+3sigma如下图所示的值?

通常情况下,我使用std = np.std(x),但说实话,我不知道它是否返回1sigma值或可能2sigma,或者其他什么.我非常感谢你的帮助.先感谢您.
我成功地使用 Welford 的方法来计算运行方差和标准差,正如 Stack Overflow 和John D Cook 的优秀博客文章中多次描述的那样。
然而,在样本流中,有时我会遇到“回滚”或“删除样本”命令,这意味着先前的样本不再有效,应从计算中删除。我知道要移除的样本的价值以及处理时间。但我正在使用 Welford,因为我无法返回再次遍历所有数据。
是否有一种算法可以成功调整我的运行方差以删除或否定特定的先前处理的样本?
我有一个清单:
s = [0.995537725, 0.994532199, 0.996027983, 0.999891383, 1.004754272, 1.003870012, 0.999888944, 0.994438078, 0.992548715, 0.998344545, 1.004504764, 1.00883411]
Run Code Online (Sandbox Code Playgroud)
我在Excel中计算了它的标准差,我得到了答案:0.005106477我使用的函数是:=STDEV(C5:N5)
然后我使用numpy.stdas 进行相同的计算:
import numpy as np
print np.std(s)
Run Code Online (Sandbox Code Playgroud)
但是,我得到了答案: 0.0048890791894
我甚至写了自己的std函数:
def std(input_list):
count = len(input_list)
mean = float(sum(input_list)) / float(count)
overall = 0.0
for i in input_list:
overall = overall + (i - mean) * (i - mean)
return math.sqrt(overall / count)
Run Code Online (Sandbox Code Playgroud)
而我自己的函数给出与numpy相同的结果.
所以我想知道是否有这样的差异?或者只是我犯了一些错误?
有一个pandas数据框如下:
a b
0 1 12
1 1 13
2 1 23
3 2 22
4 2 23
5 2 24
6 3 30
7 3 35
8 3 55
Run Code Online (Sandbox Code Playgroud)
我想找到每组中b列的平均标准偏差.我的以下代码为每组提供0.
stdMeann = lambda x: np.std(np.mean(x))
print(pd.Series(data.groupby('a').b.apply(stdMeann)))
Run Code Online (Sandbox Code Playgroud) 这个问题涉及在 Python 中使用与学术出版物中找到的表格相对应的格式化输出进行描述性统计的最佳实践:平均值在下面的括号中带有各自的标准偏差。最终目标是能够以 Latex 表格格式(或其他格式、html 等)导出它。
示例(Deucherta & Eugster (2018)):
在 Pandas 中进行描述性统计的经典解决方案是使用 a 的describe()方法DataFrame。
import numpy as np
import pandas as pd
# Generate a DataFrame to have an example
df = pd.DataFrame(
{"Age" : np.random.normal(20,15,5),
"Income": np.random.pareto(1,5)*20_000 }
)
# The describe method to get means and stds
df.describe().loc[["mean", "std"]].T
>>>
mean std
Age 15.322797 13.449727
Income 97755.733510 143683.686484
Run Code Online (Sandbox Code Playgroud)
我想要的是以下输出:
Age 15.32
(13.44)
Income 97755.73
(143683.68)
Run Code Online (Sandbox Code Playgroud)
有一个适用于多索引数据帧的解决方案会很好:
df2 = pd.DataFrame(
{"Age" …Run Code Online (Sandbox Code Playgroud) 有人告诉我,我需要为涉及神经网络的论文标准化我的 MSE。
NMSE 的方程似乎有点少而且相距甚远。我有以下几点,如果可能的话,我想证实一下:
标准偏差项应该从目标值还是预测值计算出来?
此外,与 NMSE 相比,使用 MSE 的主要优势是什么?仅仅是因为更简单的规模,它使错误比较更容易吗?
非常感谢您的帮助!
error-handling normalization mse neural-network standard-deviation
是否有矢量化操作来计算 Python DataFrame 的累积和滚动标准偏差 (SD)?
例如,我想添加一个列 'c',它根据列 'a' 计算累积 SD,即在索引 0 中,由于 1 个数据点,它显示 NaN,在索引 1 中,它根据 2 个数据计算 SD积分等等。
同样的问题也适用于滚动 SD。有没有一种有效的方法来计算而不通过 df.itertuples() 进行迭代?
import numpy as np
import pandas as pd
def main():
np.random.seed(123)
df = pd.DataFrame(np.random.randn(10, 2), columns=['a', 'b'])
print(df)
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)