Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中计算单尾测试的pvalue?_Python_Scipy_Statistics_P Value_Hypothesis Test - Fatal编程技术网

如何在python中计算单尾测试的pvalue?

如何在python中计算单尾测试的pvalue?,python,scipy,statistics,p-value,hypothesis-test,Python,Scipy,Statistics,P Value,Hypothesis Test,一人口比例 研究问题:前几年,52%的父母认为电子和社交媒体是青少年睡眠不足的原因。现在有更多的父母相信他们的青少年睡眠不足是由于电子和社交媒体造成的吗 人群:有青少年(13-18岁)的父母感兴趣的参数:p无效假设:p=0.52替代性催眠:p>0.52(注意,这是一个单侧检验) 1018名家长 56%的人认为青少年睡眠不足是由电子和社交媒体造成的 这是一个单尾测试,根据教授的说法,p值应该是0.0053,但是当我在python中计算z统计=2.5545334262132955的p值时: p_值=

一人口比例

研究问题:前几年,52%的父母认为电子和社交媒体是青少年睡眠不足的原因。现在有更多的父母相信他们的青少年睡眠不足是由于电子和社交媒体造成的吗

人群:有青少年(13-18岁)的父母感兴趣的参数:p无效假设:p=0.52替代性催眠:p>0.52(注意,这是一个单侧检验)

1018名家长

56%的人认为青少年睡眠不足是由电子和社交媒体造成的

这是一个单尾测试,根据教授的说法,p值应该是0.0053,但是当我在python中计算z统计=2.5545334262132955的p值时:

p_值=stats.distributions.norm.cdf(1-z_统计)

此代码将0.06作为输出

我知道
stats.distributions.norm.cdf
给出统计数据左侧的概率,但上面的代码给出了错误的p值

但当我打字时:
stats.distributions.norm.cdf(-z_统计)

它给出的输出为0.0053


这怎么可能,请帮忙

这个问题被表述为一个二项式问题:1018人以恒定的概率做出肯定/否定的决定。在你的案例中,1018人中有570人持有这种信念,而这种可能性为52%

我不知道Python,但我可以确认您的老师在R:

> binom.test(570, 1018, p = .52, alternative = "greater") Exact binomial test data: 570 and 1018 number of successes = 570, number of trials = 1018, p-value = 0.005843 alternative hypothesis: true probability of success is greater than 0.52 95 percent confidence interval: 0.533735 1.000000 sample estimates: probability of success 0.5599214 >二项标准检验(5701018,p=0.52,备选方案=“更大”) 精确二项检验 数据:570和1018 成功次数=570,试验次数= 1018,p值=0.005843 替代假设:成功的真实概率大于0.52 95%置信区间: 0.533735 1.000000 样本估计: 成功概率 0.5599214 事实上,您处理z值让我相信,您没有Python问题,但是使用了错误的测试,这就是为什么我相信我可以使用R来回答。 您可以在此处找到Python中插入的二项式测试:

由于n*p>30,所以用正态近似二项分布,而a的zscore为:

因此,计算如下:

import numpy as np
from scipy import stats
p0 = 0.52
p = 0.56
n = 1018
Z = (p-p0)/np.sqrt(p0*(1-p0)/n)

Z
2.5545334262132955
你的Z是正确的,
stats.norm.cdf(Z)
给出了直到Z的累积概率,因为你需要观察到比这更极端的概率,它是:

1-stats.norm.cdf(Z)
0.0053165109918223985

正态分布的概率密度函数是对称的,因此
1-stats.norm.cdf(Z)
stats.norm.cdf(-Z)

这是错误的位置。您应该在StackExchange统计网站上发布此信息。这里有一个有用的提示:如果您没有代码,那么这不是正确的站点。