#!/usr/bin/env python
# coding: utf-8

# In[1]:


import pyperclip

def n0():
    pyperclip.copy('''1). Пусть x⃗ =(x1,…,x20) – реализация случайной выборки X⃗ =(X1,…,X20) из нормального распределения N(μ;3,22). Проверяется на уровне значимости α=0,04 основная гипотеза H0:μ=1,65 против альтернативной гипотезы H1:μ≠1,65 с критическим множеством вида Kα=(−∞,−A)∪(A,+∞). 1) Найдите значение статистики критерия Zнабл.=Z(x⃗ ). 2) Найдите границу А критического множества. 3) Найдите P-значение критерия и сделайте выводы. 4) Найдите мощность W критерия для H1:μ=1,52.
Исходные данные: x⃗ = (-5,641; 5,885; -1,079; 7,921; 5,669; -0,001; 9,762; 5,076; 3,167; 3,471; 1,036; 6,13; 0,419; 2,498; -1,457; 2,824; 1,725; 3,795; -3,386; -0,196). \n \n
2). Пусть x⃗ =(x1,…,x30) – реализация случайной выборки X⃗ =(X1,…,X30) из нормального распределения N(1,65;σ2). Проверяется на уровне значимости α=0,05 гипотеза H0:σ=1,15 против альтернативной гипотезы H1:σ≠1,15 с критическим множеством вида Kα=(0;A)∪(B;+∞). 1) Найдите значение статистики критерия χ20. 2) Найдите границы А и В критического множества и проверьте гипотезу H0. 3) Найдите P-значение критерия. 4) Найдите вероятность ошибки второго рода β для σ1=1,25. Исходные данные: x⃗ = (-0,738; 2,94; 0,676; 0,874; 0,824; -1,162; 0,93; 2,749; 2,447; 0,591; 2,566; -0,634; 1,575; 0,886; 2,808; 0,885; 3,55; 1,327; 1,796; 3,074; 3,033; 1,328; 0,959; -0,171; 1,779; 0,062; 0,485; 0,609; -0,062; 0,487). \n \n
3). Пусть x⃗ =(x1,…,x20) – реализация случайной выборки X⃗ =(X1,…,X20) из нормального распределения N(μx;1,12), а y⃗ =(y1,…,y30) – реализация случайной выборки Y⃗ =(Y1,…,Y30) из нормального распределения N(μy;1,32). Известно, что X⃗  и Y⃗  независимы. Проверяется гипотеза H0:μx=μy против альтернативной гипотезы H1:μx>μy. При уровне значимости α применяется критерий с критической областью {Z>A}, где статистика критерия Z=Z(X⃗ ,Y⃗ ) – это нормированная разность X¯−Y¯, A=Aα – зависящее от α критическое значение. Соответствующее критическое множество имеет вид Kα=(Aα;∞). 1) Найдите значение статистики критерия Zнабл.=Z(x⃗ ,y⃗ ). 2) Найдите P-значение критерия. 3) Найдите критическое значение A, критическое множество Kα и проверьте гипотезу H0 при α=0,05. 4) Найдите мощность критерия W в случае μx−μy=0,9 и α=0,05. Исходные данные: x⃗ = (4,078; 4,08; 2,435; 5,672; 3,679; 3,854; 3,81; 2,062; 3,904; 5,504; 5,238; 3,605; 5,343; 2,527; 4,471; 3,864; 5,556; 3,864; 6,209; 4,253); y⃗ = (4,586; 5,915; 5,873; 4,1; 3,716; 2,54; 4,569; 2,782; 3,222; 3,351; 2,654; 3,225; 3,097; 2,08; 3,653; 4,98; 4,86; 4,098; 2,466; 4,421; 5,481; 2,849; 1,713; 5,086; 3,944; 3,305; 3,949; 4,249; 1,545; 5,956).\n \n
4). Для трех групп финансовых показателей A: (X1;...;X20), B: (Y1;...;Y21), C: (Z1;...;Z22), которые по предположению независимы и распределены, соответственно, по трем нормальным законам N(μx,σ2), N(μy,σ2), N(μz,σ2) (с одинаковой неизвестной дисперсией σ2) на уровне значимости α=0,04 с помощью F-критерия (Фишера) проверяется гипотеза H0:μx=μy=μz о совпадении ожидаемых значений показателей. Конкретные значения всех показателей указаны ниже. 1) По данным значениям показателей найдите межгрупповую дисперсию. 2) По этим же данным найдите среднюю групповую дисперсию. 3) Найдите значение статистики F-критерия, критическое множество Kα и проверьте гипотезу H0. 4) Найдите P-значение критерия и сделайте выводы.
Значения показателей группы A: (3,645; 6,926; 5,956; -1,441; 3,57; 0,706; 0,832; 2,168; 1,475; 4,881; 3,079; 1,416; 2,254; 1,968; 4,985; 0,567; 1,914; -1,121; -5,538; 2,799). Значения показателей группы B: (3,348; -0,83; 7,001; -2,681; 1,219; 0,613; 5,085; 4,92; 1,503; 2,083; -1,208; -4,05; 0,195; 1,507; 4,299; 4,226; 0,093; 0,314; -1,626; -2,592; -3,336). Значения показателей группы C: (6,172; -0,225; -0,039; -2,157; 3,121; -3,096; 0,547; -1,228; 2,106; -0,228; -1,97; 1,027; 2,214; 1,273; 1,886; -0,549; 0,157; -0,648; 0,165; -1,014; -3,388; 1,561)
''')

def n1():
    pyperclip.copy('''sigma = 3.1
alpha = 0.02
mu1 = 1.65
mu2 = 1.54

X = '-0,165; -3,421; 3,86; -0,469; 0,44; -0,161; -4,451; 3,277; 6,928; 1,259; 0,542; 7,472; -2,788; 1,896; -1,358; 6,381; 3,769; 0,668; -0,954; -0,969; 4,075; -1,777; 1,489; -3,048; -1,943'
X = np.array(list(map(float, X.replace(',', '.').split(';'))))

stat = ((X.mean() - mu1) / sigma * np.sqrt(len(X)))

A = scs.norm.isf(alpha / 2)

p = 2 * min(scs.norm.cdf(stat), scs.norm.sf(stat))

h = (mu2 - mu1) / sigma * np.sqrt(len(X))
power = scs.norm.sf(A - h) + scs.norm.cdf(-A - h)

print('значение статистики критерия =', round(stat, 3))
print('граница А критического множества =', round(A, 3))
print('р-значение критерия =', round(p, 3))
print('мощность критерия =', round(power, 3))''')

def n2():
    pyperclip.copy('''mu = 1.83  
alpha = 0.03   
sigma1 = 1.13
sigma2 = 1.23

X = '0,185; 1,269; 2,034; 1,356; 2,498; -0,185; 1,665; 0,436; 0,226; 0,556; 0,858; 1,273; -0,107; 2,228; 1,736; -0,526; 2,892; 3,352; 2,542; 1,007; 0,0; 2,402; 0,754; 2,591; 1,445; 2,314; 1,613; 2,008; 1,222; 3,228; 1,353; 1,664; 3,338; -0,313; -0,226; 2,305; -0,116; 3,406; 0,743; 0,365; 3,383; 2,883; 3,32; 2,234; 0,237'
X = np.array(list(map(float,X.replace(',', '.').split(';'))))

stat = sum((X - mu)**2) / sigma1**2

A = scs.chi2.ppf(alpha / 2, len(X))

B = scs.chi2.isf(alpha / 2, len(X))

p1 = scs.chi2.cdf(stat, len(X))
p2 = 1 - p1
p = 2 * min(p1, p2)

b = scs.chi2.cdf(sigma1**2 / sigma2**2 * B, len(X)) - scs.chi2.cdf(sigma1**2 / sigma2**2 * A, len(X))

print('значение статистики критерия =', round(stat, 3))
print('граница А критического множества =', round(A, 3))
print('граница B критического множества =', round(B, 3))
print('р-значение критерия =', round(p, 3))
print('вероятность ошибки второго рода =', round(b, 3))''')
    
def n3():
    pyperclip.copy('''sigmax = 0.7**2  
sigmay = 1.4**2
alpha = 0.02
delta = 0.1

X = '3,842; 3,374; 4,18; 4,5; 4,247; 4,412; 3,756; 3,946; 3,729; 3,948; 3,631; 2,992; 4,324; 3,919; 3,059; 4,524; 3,565; 4,236; 4,71; 4,29; 4,998; 3,336; 4,482; 3,721; 3,59'
X = np.array(list(map(float, X.replace(',', '.').split(';'))))
Y = '3,19; 3,564; 4,079; 2,369; 5,261; 4,652; 1,849; 6,084; 6,654; 5,65; 3,748; 2,501; 5,476; 3,436; 5,711; 4,292; 5,367; 4,499; 4,989; 4,015; 6,5; 4,178; 4,563; 6,636; 2,113; 2,221; 5,357; 2,358; 6,721; 3,421'
Y = np.array(list(map(float, Y.replace(',', '.').split(';'))))

stat = (X.mean() - Y.mean()) / np.sqrt(sigmax / len(X) + sigmay / len(Y))

p = scs.norm.sf(stat)

A = scs.norm.isf(alpha)

b = scs.norm.cdf(A - delta * np.sqrt(len(X) * len(Y) / (len(Y) * sigmax + len(X) * sigmay)))
power = 1 - b

print('Значение статистики критерия =', round(stat, 3))
print('P-значение критерия =', round(p, 3))
print('Критическое значение А =', round(A, 3))
print('Мощность критерия =', round(power, 3))''')
    
def n4():
    pyperclip.copy('''alpha = 0.04
A = '4,838; 2,4; -1,849; -0,447; 4,929; 1,946; 5,04; -2,016; 2,041; -1,346; 5,231; 3,968; 0,469; 2,685; 0,863; 3,228; 1,205; 2,925; -1,307; -1,524; 4,344; 5,933; -0,558; 1,722; -3,084; 9,859; -0,92; 4,399; -0,751; -1,925; -1,281; 0,816; 2,753; -1,259; 4,423'
B = '2,268; -1,837; 4,782; 1,163; 10,573; -0,648; -0,878; 0,834; 0,763; 1,742; 0,193; 0,255; 0,088; -0,087; 5,47; 5,403; 1,526; 5,433; 6,803; -5,62; 1,083; 0,784; 4,277; 2,1; 7,441; 4,236; 1,214; 4,097; -0,11'
C = '2,397; -1,347; 0,728; -1,121; 1,819; 6,87; -1,122; 3,283; -0,743; -1,279; 2,434; -3,094; 2,416; 2,32; -0,991; 1,018; 1,952; 4,493; 2,952'

A = np.array(list(map(float, A.replace(',','.').split(';'))))
B = np.array(list(map(float, B.replace(',','.').split(';'))))
C = np.array(list(map(float, C.replace(',','.').split(';'))))

n1 = len(A); n2 = len(B); n3 = len(C)
ns = np.array([n1,n2,n3])
n = sum(ns)
k = 3 #кол-во групп

# групповые средние
Gr_mn = np.array([A.mean(),B.mean(),C.mean()])
Gr_var = np.array([A.var(),B.var(),C.var()])

# общее среднее
all_mn = np.dot(Gr_mn,ns)/n

# межгрупповая дисперсия delta^2 = SSA/n
delta2 = np.dot((Gr_mn-all_mn)**2,ns)/n
print('Межгрупповая дисперсия =', round(delta2,3))

# среднее из внутригрупповых дисперсий sigma_mean^2 = SSW/n
sigma_mean2 = np.dot(Gr_var,ns)/n
print('Средняя групповая дисперсия =', round(sigma_mean2,3))

# общая дисперсия SST/n = SSW/n + SSA/n
sigma_sample = sigma_mean2+delta2
#print('общая дисперсия =', sigma_sample)

# проверка
ABC = np.hstack([A,B,C])
#print('дисперсия всей совокупности =', ABC.var())

F_cr = scs.f.isf(alpha,k-1,n-k)
#print('критическая область:', F_cr)

# MSA = SSA/(k-1) = n*delta2/(k-1)
MSA = n*delta2/(k-1)
# MSW = SSW/(n-k) = n*sigma_mean^2/(n-k)
MSW = n*sigma_mean2/(n-k)

F_obs = MSA/MSW
print('Значение статистики критерия =', round(F_obs,3))

#print('H0 отвергается') if F_obs>F_cr else print('H0 не отвергается')

pv = scs.f.sf(F_obs,k-1,n-k)
print('P-значение критерия =', round(pv,3))
''')

