Advertisement
AIwinter

1

Sep 29th, 2024
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.17 KB | None | 0 0
  1. import numpy as np
  2. import random
  3. import math
  4. import pandas as pd
  5.  
  6. alpha = 0.05
  7. from google.colab import drive
  8. drive.mount('/content/drive')
  9. file_path = '/content/drive/MyDrive/table.txt'
  10.  
  11. a = float(input('Введите начало интервала: '))
  12. b = float(input('Введите конец интервала: '))
  13. N = int(input('Введите объём выборки: '))
  14.  
  15. "ввод: Введите начало интервала: -1.5
  16. Введите конец интервала: 1.5
  17. Введите объём выборки: 1000"
  18.  
  19. R = np.zeros(N)
  20. for i in range (0, N):
  21. R[i] = a + (b - a) * random.random()
  22. RSorted = R.copy()
  23. RSorted.sort()
  24.  
  25. xiTable = pd.read_csv(file_path, sep="\t", header=None)
  26. print (xiTable)
  27. xiTable = np.asarray(xiTable, dtype=float)
  28.  
  29. "ввод: 0 1 2 3 4 5 6 7
  30. 0 0 0.95000 0.75000 0.25000 0.10000 0.05000 0.01000 0.00500
  31. 1 1 0.00393 0.10153 1.32330 2.70554 3.84146 6.63490 7.87944
  32. 2 2 0.10259 0.57536 2.77259 4.60517 5.99146 9.21034 10.59663
  33. 3 3 0.35185 1.21253 4.10834 6.25139 7.81473 11.34487 12.83816
  34. 4 4 0.71072 1.92256 5.38527 7.77944 9.48773 13.27670 14.86026
  35. 5 5 1.14548 2.67460 6.62568 9.23636 11.07050 15.08627 16.74960
  36. 6 6 1.63538 3.45460 7.84080 10.64464 12.59159 16.81189 18.54758
  37. 7 7 2.16735 4.25485 9.03715 12.01704 14.06714 18.47531 20.27774
  38. 8 8 2.73264 5.07064 10.21885 13.36157 15.50731 20.09024 21.95495
  39. 9 9 3.32511 5.89883 11.38875 14.68366 16.91898 21.66599 23.58935
  40. 10 10 3.94030 6.73720 12.54886 15.98718 18.30704 23.20925 25.18818
  41. 11 15 7.26094 11.03654 18.24509 22.30713 24.99579 30.57791 32.80132
  42. 12 20 10.85081 15.45177 23.82769 28.41198 31.41043 37.56623 39.99685
  43. 13 25 14.61141 19.93934 29.33885 34.38159 37.65248 44.31410 46.92789
  44. 14 30 18.49266 24.47761 34.79974 40.25602 43.77297 46.97924 50.89218"
  45.  
  46. def findTableXi(k, alpha):
  47. column = 0
  48. for i in range (1, xiTable.shape[1]):
  49. if xiTable[0][i] == alpha:
  50. column = i
  51. if column == 0:
  52. return 'Нет нужного значения альфа в таблице'
  53. i = 1
  54. while i < len(xiTable) - 1 and xiTable[i][0] < k:
  55. i += 1
  56. if k == xiTable[i][0]:
  57. xi = xiTable[i][column]
  58. elif k > xiTable[len(xiTable) - 1][0]:
  59. 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])
  60. else:
  61. xi = xiTable[i - 1][column] + (xiTable[i][column] - xiTable[i - 1][column]) / (xiTable[i][0] - xiTable[i - 1][0]) * (k - xiTable[i - 1][0])
  62. return xi
  63.  
  64. MT = (a + b) / 2
  65. DT = (b - a) * (b - a) / 12
  66. ME = 0
  67. DE = 0
  68. for i in range (0, N):
  69. ME += RSorted[i]
  70. ME /= N
  71. for i in range (0, N):
  72. DE += (ME - RSorted[i]) * (ME - RSorted[i])
  73. DE /= (N - 1)
  74. print(MT)
  75. print(ME)
  76. print(DT)
  77. print(DE)
  78.  
  79. "ввод: 0.0
  80. 0.02976252555300853
  81. 0.75
  82. 0.7387569760189557"
  83.  
  84. intervalsNumber = int(1 + 3.322 * math.log10(N))
  85. k = intervalsNumber - 1
  86. XSquaredE = 0
  87. j = 0
  88. for i in range (0, intervalsNumber):
  89. n = 0
  90. while j < N and RSorted[j] < a + (b - a) * (i + 1) / intervalsNumber:
  91. j += 1
  92. n += 1
  93. XSquaredE += (n - N / intervalsNumber) * (n - N / intervalsNumber)
  94. XSquaredE = XSquaredE * intervalsNumber / N
  95. XSquaredT = findTableXi(k, alpha)
  96. print('Теоретическое значение хи-квадрат: ' + str(XSquaredT))
  97. print('Расчётное значение хи-квадрат: ' + str(XSquaredE))
  98.  
  99. "ввод: Теоретическое значение хи-квадрат: 16.91898
  100. Расчётное значение хи-квадрат: 10.26"
  101.  
  102. output1 = 'Начало интервала: ' + str(a) + '\n' + 'Конец интервала: ' + str(b) + '\n' + 'Объём выборки: ' + str(N)
  103. output2 = 'Мат. ожидание теоретическое: ' + str(MT) + '\n' + 'Мат. ожидание расчётное: ' + str(ME) + '\n' + 'Дисперсия теоретическая: ' + str(DT) + '\n' + 'Дисперсия расчётная: ' + str(DE) + '\n' + 'Хи-критерий теоретический: ' + str(XSquaredT) + '\n' + 'Хи-критерий расчётный: ' + str(XSquaredE) + '\n' + 'Уровень значимости: ' + str(alpha)
  104. if XSquaredE < XSquaredT:
  105. conclusion = 'Значение хи-квадрат критерий расчётное меньше, чем значение хи-квадрат критерий теоретическое, поэтому можно сделать вывод, что гипотеза верна'
  106. else:
  107. conclusion = 'Значение хи-квадрат критерий расчётное не меньше, чем значение хи-квадрат критерий теоретическое, поэтому можно сделать вывод, что гипотеза неверна'
  108. print(output1)
  109. print(output2)
  110. print(conclusion)
  111. with open('/content/output.txt', 'w') as writefile:
  112. writefile.write(output1)
  113. writefile.write('\n' + 'Выборка: ')
  114. for i in range (0, N):
  115. writefile.write(str(R[i]) + ' ')
  116. writefile.write('\n' + output2)
  117. writefile.write('\n' + conclusion)
  118.  
  119. "ввод: Начало интервала: -1.5
  120. Конец интервала: 1.5
  121. Объём выборки: 1000
  122. Мат. ожидание теоретическое: 0.0
  123. Мат. ожидание расчётное: 0.02976252555300853
  124. Дисперсия теоретическая: 0.75
  125. Дисперсия расчётная: 0.7387569760189557
  126. Хи-критерий теоретический: 16.91898
  127. Хи-критерий расчётный: 10.26
  128. Уровень значимости: 0.05
  129. Значение хи-квадрат критерий расчётное меньше, чем значение хи-квадрат критерий теоретическое, поэтому можно сделать вывод, что гипотеза верна"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement