Расчет Z-баллов по среднему и st dev

Я хотел бы спросить, имеет ли какой-либо популярный пакет, такой как: numpy, scipy и т. Д., Встроенную функцию для вычисления Z-Score, если я уже знаю критическое значение, mean и st dev.

Я делаю это обычно так:

def Zscore(xcritical, mean, stdev):
    return (xcritical - mean)/stdev

#example:
xcritical = 73.06
mean = 72
stdev = 0.5

zscore = Zscore(xcritical, mean, stdev)

а позже я использую scipy.stats.norm.cdf рассчитать вероятность того, что х ниже критического.

import scipy.stats as st
print(st.norm.cdf(zscore))

Интересно, могу ли я как-нибудь упростить это? Я знаю что есть scipy.stats.zscore функция, но она берет образец массива, а не образец статистики.

Спасибо!

Matt

4 ответа

Запуск Python 3.9стандартная библиотека предоставляет zscore функция на NormalDist объект как часть statistics модуль:

NormalDist(mu=72, sigma=.5).zscore(73.06)
# 2.1200000000000045

В вашем вопросе я не уверен, что вы имеете в виду, когда рассчитываете вероятность того, что "x" будет ниже "xcritical", потому что вы не определили "x". В любом случае, я отвечу, как рассчитать z-показатель для значения "х".

Судя по документации по scipy.stats.norm, здесь, похоже, не существует встроенного метода для вычисления z-показателя для значения (в данном случае "xcritical") с учетом среднего значения и стандартного отклонения. Однако вы можете рассчитать то же самое, используя встроенные методы cdf и ppf. Рассмотрим следующий фрагмент (значения такие же, как вы использовали в своем сообщении, где "xcritical" - это значение, для которого вы хотите рассчитать z-показатель):

xcritical = 73.06
mean = 72
stdev = 0.5

p = norm.cdf(x=xcritical,loc=mean,scale=stdev)
z_score = norm.ppf(p)
print('The z-score for {} corresonding to {} mean and {} std deviation is: {:.3f}'.format(xcritical,mean,stdev,z_score))

Здесь мы сначала вычисляем кумулятивную вероятность 'p' получения значения 'xcritical' с учетом 'mean' и 'stdev', используя norm.cdf (). norm.cdf () вычисляет процент площади под кривой нормального распределения от отрицательной бесконечности до значения "x" (в данном случае "xritical"). Затем мы передаем эту вероятность в norm.ppf(), чтобы получить z-оценку, соответствующую этому значению 'x'. norm.ppf() - это функция процентной точки, которая выдает значение (z), соответствующее пройденной вероятности нижнего хвоста в стандартной нормальной распределенной кривой. Вывод этого кода 2.12, который совпадает с тем, что вы получите из функции Zscore ().

Надеюсь, это поможет!

Вы можете сделать это всего в одной строке; вот так:

>>> import scipy.stats as st
>>> st.norm(mean, stdev).cdf(xcritical))

Известно, что срок службы батареи в часах приблизительно нормально распределен со стандартным отклонением σ = 1,25 часа. Случайная выборка из 10 батарей имеет средний срок службы x =40,5 часов. а. Есть ли доказательства, подтверждающие утверждение о том, что время автономной работы превышает 40 часов? Используйте α = 0,5.

norm.sf, потому что я хочу знать правую часть кривой колокола, чтобы ответить, если она превышает альфа.

      norm.sf(40.5, loc=40, scale=1.25/np.sqrt(10)) #recall the z score formula

p-значение = 0,102

Но: u=40; Ха: и> 40

Таким образом, значение p больше альфа, поэтому мы не можем отвергнуть нулевую гипотезу и сделать вывод, что действительно есть доказательства, подтверждающие, что срок службы батареи превышает 40 часов. P-значение 0,10> 0,05 альфа

Другие вопросы по тегам