[英]how to calculate pvalue for one tailed test in python?
一人口比例
研究問題:前幾年,52% 的父母認為電子產品和社交媒體是導致青少年睡眠不足的原因。 今天有更多的父母認為他們的青少年睡眠不足是由於電子產品和社交媒體造成的嗎?
人群:有青少年的父母(13-18 歲) 感興趣的參數:p Null 假設:p = 0.52 替代假設:p > 0.52(請注意,這是一個單方面的測試)
1018 家長
56% 認為他們的青少年睡眠不足是由於電子產品和社交媒體造成的
這是一個單尾測試,根據教授的說法,p 值應該是 0.0053,但是當我在 python 中計算 z-statistic=2.5545334262132955 的 p 值時:
p_value=stats.distributions.norm.cdf(1-z_statistic)
此代碼給出 0.06 作為 output
我知道stats.distributions.norm.cdf
給出了統計數據左側的概率,但上面的代碼給出了錯誤的 p 值
但是當我輸入: stats.distributions.norm.cdf(-z_statistic)
它給出 output 為 0.0053,
這怎么可能,請幫忙!!!
由於 n*p > 30,您使用正態近似二項式分布,並且比例測試的 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
正態分布的概率密度 function 是對稱的,所以1-stats.norm.cdf(Z)
與stats.norm.cdf(-Z)
相同
該問題被表述為二項式問題: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
事實上,您處理 z 值讓我相信,您沒有 Python 問題,但使用了錯誤的測試,這就是為什么我相信我可以使用 R 來回答。 You can find a binomial test impemented in Python here: https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.binom_test.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.