Я хочу импортировать значения от пользователя, для этого т-теста - PullRequest
0 голосов
/ 01 июня 2018

Я не хочу, чтобы a, b были случайными, я хочу, чтобы они были конкретными, поэтому пользователь будет вводить 2 сэмпла, чтобы он мог рассчитывать в соответствии с ним (дисперсия, среднее, размер). Я пробовал это следующим образом:

size = input('Size of sample: ')
N = size

source2 = input('Mean: ')
source3 = input('Distribution: ')
a = source2 
print("a:",a)

Gauss-eloszlású adat, átlag = 0 и variancia = 1

b = source3
print("b:",b)

Импорт пакетов

import numpy as np
from scipy import stats

Определение 2 случайных распределений Размер выборки

N = 10

Распределенные по Гауссу данные со средним = 2 и var = 1

a = np.random.randn(N) + 2

Распределенные по Гауссу данные со средним = 0 и var = 1

b = np.random.randn(N)

Рассчитать стандартное отклонениеВычислить дисперсию, чтобы получить стандартное отклонение

. Для несмещенной оценки максимального правдоподобия мы должны разделить переменную на N-1, и, следовательно, параметр ddof = 1

var_a = a.var(ddof=1)
var_b = b.var(ddof=1)

стандартное отклонение

s = np.sqrt((var_a + var_b)/2)
s

Рассчитать t-статистику

t = (a.mean() - b.mean())/(s*np.sqrt(2/N))

Сравнить с критическим значением t Степени свободы

df = 2*N - 2

p-значение после сравнения с t

p = 1 - stats.t.cdf(t,df=df)


print("t = " + str(t))
print("p = " + str(2*p))

Обратите внимание, что мы умножаем значение p на 2, потому что это twpt-критерий хвоста Вы можете видеть, что после сравнения статистики t с критическим значением t (вычисленным внутри) мы получаем хорошее значение p, равное 0,0005, и, таким образом, мы отвергаем нулевую гипотезу и, таким образом, доказываем, что среднее из двух распределений различнои статистически значимо.

Перекрестная проверка с внутренней функцией scipy

t2, p2 = stats.ttest_ind(a,b)
print("t = " + str(t2))
print("p = " + str(2*p2))
...