Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- import random
- import math
- import pandas as pd
- alpha = 0.05
- from google.colab import drive
- drive.mount('/content/drive')
- file_path = '/content/drive/MyDrive/table.txt'
- a = float(input('Введите начало интервала: '))
- b = float(input('Введите конец интервала: '))
- N = int(input('Введите объём выборки: '))
- "ввод: Введите начало интервала: -1.5
- Введите конец интервала: 1.5
- Введите объём выборки: 1000"
- R = np.zeros(N)
- for i in range (0, N):
- R[i] = a + (b - a) * random.random()
- RSorted = R.copy()
- RSorted.sort()
- xiTable = pd.read_csv(file_path, sep="\t", header=None)
- print (xiTable)
- xiTable = np.asarray(xiTable, dtype=float)
- "ввод: 0 1 2 3 4 5 6 7
- 0 0 0.95000 0.75000 0.25000 0.10000 0.05000 0.01000 0.00500
- 1 1 0.00393 0.10153 1.32330 2.70554 3.84146 6.63490 7.87944
- 2 2 0.10259 0.57536 2.77259 4.60517 5.99146 9.21034 10.59663
- 3 3 0.35185 1.21253 4.10834 6.25139 7.81473 11.34487 12.83816
- 4 4 0.71072 1.92256 5.38527 7.77944 9.48773 13.27670 14.86026
- 5 5 1.14548 2.67460 6.62568 9.23636 11.07050 15.08627 16.74960
- 6 6 1.63538 3.45460 7.84080 10.64464 12.59159 16.81189 18.54758
- 7 7 2.16735 4.25485 9.03715 12.01704 14.06714 18.47531 20.27774
- 8 8 2.73264 5.07064 10.21885 13.36157 15.50731 20.09024 21.95495
- 9 9 3.32511 5.89883 11.38875 14.68366 16.91898 21.66599 23.58935
- 10 10 3.94030 6.73720 12.54886 15.98718 18.30704 23.20925 25.18818
- 11 15 7.26094 11.03654 18.24509 22.30713 24.99579 30.57791 32.80132
- 12 20 10.85081 15.45177 23.82769 28.41198 31.41043 37.56623 39.99685
- 13 25 14.61141 19.93934 29.33885 34.38159 37.65248 44.31410 46.92789
- 14 30 18.49266 24.47761 34.79974 40.25602 43.77297 46.97924 50.89218"
- def findTableXi(k, alpha):
- column = 0
- for i in range (1, xiTable.shape[1]):
- if xiTable[0][i] == alpha:
- column = i
- if column == 0:
- return 'Нет нужного значения альфа в таблице'
- i = 1
- while i < len(xiTable) - 1 and xiTable[i][0] < k:
- i += 1
- if k == xiTable[i][0]:
- xi = xiTable[i][column]
- elif k > xiTable[len(xiTable) - 1][0]:
- xi = xiTable[len(xiTable) - 1][column] + (xiTable[len(xiTable) - 1][column] - xiTable[len(xiTable) - 2][column]) / (xiTable[len(xiTable) - 1][0] - xiTable[len(xiTable) - 2][0]) * (k - xiTable[len(xiTable) - 1][0])
- else:
- xi = xiTable[i - 1][column] + (xiTable[i][column] - xiTable[i - 1][column]) / (xiTable[i][0] - xiTable[i - 1][0]) * (k - xiTable[i - 1][0])
- return xi
- MT = (a + b) / 2
- DT = (b - a) * (b - a) / 12
- ME = 0
- DE = 0
- for i in range (0, N):
- ME += RSorted[i]
- ME /= N
- for i in range (0, N):
- DE += (ME - RSorted[i]) * (ME - RSorted[i])
- DE /= (N - 1)
- print(MT)
- print(ME)
- print(DT)
- print(DE)
- "ввод: 0.0
- 0.02976252555300853
- 0.75
- 0.7387569760189557"
- intervalsNumber = int(1 + 3.322 * math.log10(N))
- k = intervalsNumber - 1
- XSquaredE = 0
- j = 0
- for i in range (0, intervalsNumber):
- n = 0
- while j < N and RSorted[j] < a + (b - a) * (i + 1) / intervalsNumber:
- j += 1
- n += 1
- XSquaredE += (n - N / intervalsNumber) * (n - N / intervalsNumber)
- XSquaredE = XSquaredE * intervalsNumber / N
- XSquaredT = findTableXi(k, alpha)
- print('Теоретическое значение хи-квадрат: ' + str(XSquaredT))
- print('Расчётное значение хи-квадрат: ' + str(XSquaredE))
- "ввод: Теоретическое значение хи-квадрат: 16.91898
- Расчётное значение хи-квадрат: 10.26"
- output1 = 'Начало интервала: ' + str(a) + '\n' + 'Конец интервала: ' + str(b) + '\n' + 'Объём выборки: ' + str(N)
- output2 = 'Мат. ожидание теоретическое: ' + str(MT) + '\n' + 'Мат. ожидание расчётное: ' + str(ME) + '\n' + 'Дисперсия теоретическая: ' + str(DT) + '\n' + 'Дисперсия расчётная: ' + str(DE) + '\n' + 'Хи-критерий теоретический: ' + str(XSquaredT) + '\n' + 'Хи-критерий расчётный: ' + str(XSquaredE) + '\n' + 'Уровень значимости: ' + str(alpha)
- if XSquaredE < XSquaredT:
- conclusion = 'Значение хи-квадрат критерий расчётное меньше, чем значение хи-квадрат критерий теоретическое, поэтому можно сделать вывод, что гипотеза верна'
- else:
- conclusion = 'Значение хи-квадрат критерий расчётное не меньше, чем значение хи-квадрат критерий теоретическое, поэтому можно сделать вывод, что гипотеза неверна'
- print(output1)
- print(output2)
- print(conclusion)
- with open('/content/output.txt', 'w') as writefile:
- writefile.write(output1)
- writefile.write('\n' + 'Выборка: ')
- for i in range (0, N):
- writefile.write(str(R[i]) + ' ')
- writefile.write('\n' + output2)
- writefile.write('\n' + conclusion)
- "ввод: Начало интервала: -1.5
- Конец интервала: 1.5
- Объём выборки: 1000
- Мат. ожидание теоретическое: 0.0
- Мат. ожидание расчётное: 0.02976252555300853
- Дисперсия теоретическая: 0.75
- Дисперсия расчётная: 0.7387569760189557
- Хи-критерий теоретический: 16.91898
- Хи-критерий расчётный: 10.26
- Уровень значимости: 0.05
- Значение хи-квадрат критерий расчётное меньше, чем значение хи-квадрат критерий теоретическое, поэтому можно сделать вывод, что гипотеза верна"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement