我有一个1维数据数组:
a = np.array([1,2,3,4,4,4,5,5,5,5,4,4,4,6,7,8])
Run Code Online (Sandbox Code Playgroud)
我希望获得68%置信区间(即:1西格玛).
在第一个评论这个回答指出,这可以实现使用scipy.stats.norm.interval从scipy.stats.norm功能,通过:
from scipy import stats
import numpy as np
mean, sigma = np.mean(a), np.std(a)
conf_int = stats.norm.interval(0.68, loc=mean,
scale=sigma)
Run Code Online (Sandbox Code Playgroud)
但是这篇文章中的评论指出,获得置信区间的实际正确方法是:
conf_int = stats.norm.interval(0.68, loc=mean,
scale=sigma / np.sqrt(len(a)))
Run Code Online (Sandbox Code Playgroud)
也就是说,sigma除以样本大小的平方根:np.sqrt(len(a)).
问题是:哪个版本是正确的?
我正在寻找一种快速的方法来获得Python中的t检验置信区间,以获得均值之间的差异.与R中的相似:
X1 <- rnorm(n = 10, mean = 50, sd = 10)
X2 <- rnorm(n = 200, mean = 35, sd = 14)
# the scenario is similar to my data
t_res <- t.test(X1, X2, alternative = 'two.sided', var.equal = FALSE)
t_res
Run Code Online (Sandbox Code Playgroud)
日期:
Welch Two Sample t-test
data: X1 and X2
t = 1.6585, df = 10.036, p-value = 0.1281
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-2.539749 17.355816
sample estimates:
mean …Run Code Online (Sandbox Code Playgroud) 我正在研究神经网络问题,将数据分类为 1 或 0。我使用二进制交叉熵损失来做到这一点。损失很好,但是,准确性非常低并且没有提高。我假设我在精度计算中犯了一个错误。在每个时期之后,我在对输出进行阈值处理后计算正确的预测,并将该数字除以数据集的总数。我在精度计算中做错了什么吗?为什么它没有改善,反而变得更糟?这是我的代码:
net = Model()
criterion = torch.nn.BCELoss(size_average=True)
optimizer = torch.optim.SGD(net.parameters(), lr=0.1)
num_epochs = 100
for epoch in range(num_epochs):
for i, (inputs,labels) in enumerate (train_loader):
inputs = Variable(inputs.float())
labels = Variable(labels.float())
output = net(inputs)
optimizer.zero_grad()
loss = criterion(output, labels)
loss.backward()
optimizer.step()
#Accuracy
output = (output>0.5).float()
correct = (output == labels).float().sum()
print("Epoch {}/{}, Loss: {:.3f}, Accuracy: {:.3f}".format(epoch+1,num_epochs, loss.data[0], correct/x.shape[0]))
Run Code Online (Sandbox Code Playgroud)
这是我得到的奇怪输出:
Epoch 1/100, Loss: 0.389, Accuracy: 0.035
Epoch 2/100, Loss: 0.370, Accuracy: 0.036
Epoch 3/100, Loss: 0.514, Accuracy: 0.030
Epoch …Run Code Online (Sandbox Code Playgroud) 我正在尝试计算大型数据集中“力”列的均值和置信区间(95%)。我需要通过对不同的“类”进行分组来使用 groupby 函数的结果。
当我计算平均值并将其放入新数据框中时,它为我提供了所有行的 NaN 值。我不确定我是否走正确的路。有没有更简单的方法来做到这一点?
这是示例数据框:
df=pd.DataFrame({ 'Class': ['A1','A1','A1','A2','A3','A3'],
'Force': [50,150,100,120,140,160] },
columns=['Class', 'Force'])
Run Code Online (Sandbox Code Playgroud)
为了计算置信区间,我做的第一步是计算平均值。这是我使用的:
F1_Mean = df.groupby(['Class'])['Force'].mean()
Run Code Online (Sandbox Code Playgroud)
这给了我NaN所有行的值。
我想用Python大熊猫,matpolib显示95%的置信区间...但是我坚持了,因为通常.std()我会像这样做:
import pandas as pd
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import math
data = pd.read_table('output.txt',sep=r'\,', engine='python')
Ox = data.groupby(['Ox'])['Ox'].mean()
Oy = data.groupby(['Ox'])['Oy'].mean()
std = data.groupby(['Ox'])['Oy'].std()
plt.plot(Ox, Oy , label = 'STA = '+ str(x))
plt.errorbar(Ox, Oy, std, label = 'errorbar', linewidth=2)
plt.legend(loc='best', prop={'size':9.2})
plt.savefig('plot.pdf')
plt.close()
Run Code Online (Sandbox Code Playgroud)
但我没有找到可以帮助我的熊猫方法.有人知道吗?
如何在python中为我的数据找到中位数附近的置信区间?
说我有数组
a = np.array([24, 38, 61, 22, 16, 57, 31, 29, 35])
Run Code Online (Sandbox Code Playgroud)
我想在中位数附近找到 80% 的置信区间。我如何在 python 中做到这一点?
我有本福德测试结果,test_show
Expected Counts Found Dif AbsDif Z_score
Sec_Dig
0 0.119679 4318 0.080052 -0.039627 0.039627 28.347781
1 0.113890 2323 0.043066 -0.070824 0.070824 51.771489
2 0.108821 1348 0.024991 -0.083831 0.083831 62.513122
3 0.104330 1298 0.024064 -0.080266 0.080266 60.975864
4 0.100308 3060 0.056730 -0.043579 0.043579 33.683738
5 0.096677 6580 0.121987 0.025310 0.025310 19.884178
6 0.093375 10092 0.187097 0.093722 0.093722 74.804141
7 0.090352 9847 0.182555 0.092203 0.092203 74.687841
8 0.087570 8439 0.156452 0.068882 0.068882 56.587749
9 0.084997 6635 0.123007 0.038010 0.038010 31.646817
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用 …
python ×7
numpy ×2
pandas ×2
scipy ×2
statistics ×2
intervals ×1
matplotlib ×1
median ×1
plotly ×1
pytorch ×1