Advertisement
edward4324

lw2

Apr 27th, 2021
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 8.13 KB | None | 0 0
  1. clear;
  2. clc;
  3. %{
  4. 1. В соответствии с номером варианта, используя генератор псевдослучайных чисел
  5. (встроенную в математический пакет функцию),
  6. генерировать выборку из заданного непрерывного распределения объемом N=10000 с заданными для вашего распределения
  7. параметрами
  8. нормальный закон с параметрами µ=1 σ=2
  9. %}
  10.  
  11. imu = 1;
  12. isigma = 2;
  13. N = 1000;
  14.  
  15. type = "Normal";
  16. X = random(type, imu, isigma, N, 1);
  17.  
  18. %{
  19. 2. Получение точечных оценок по заданной выборочной совокупности.
  20. 2.1. По заданной совокупности выборочных значений найти оценку параметра заданного распределения,
  21. из которого генерировалась выборка, используя метод моментов. Для этого:
  22. -составить уравнение, приравняв какой-либо теоретический момент соответствующему эмпирическому моменту того же порядка
  23. - решить получившиеся уравнение относительного оцениваемого вами параметра
  24. -проанализировать поведение оценки параметра при изменении объема выборки
  25. -сделать выводы
  26. %}
  27.  
  28. syms cmu csigma;
  29.  
  30. %функции для решения в уравнениях (приравниваем теоретический момент эмпирическому соответствующего порядка)
  31. fun_mu = cmu == mean(X);
  32. fun_sigma = csigma^2 == moment(X, 2);
  33.  
  34. %оценочное мю и сигма
  35. ans_mu = double(solve(fun_mu));
  36. ans_sigma = double(max(solve(fun_sigma)));
  37.  
  38. %{
  39. 2.2. По заданной совокупности выборочных значений найти оценку параметра заданного распределения,
  40. из которого генерировалась выборка, используя метод максимального правдоподобия. Для этого необходимо:
  41. - построить график функции правдоподобия от оцениваемого параметра
  42. - найти положение максимума этой функции. Это значение и будет точечной оценкой
  43. - проанализировать поведение оценки при изменении объема выборки
  44. -проанализировать поведение функции правдоподобия при изменении объема выборки
  45. -сделать выводы
  46. %}
  47.  
  48. syms sigma;
  49.  
  50. %этот код работает только для маленьких чисел и является более честной
  51. %версией генерации следующей функции
  52.  
  53. % por = sym('a', [1 N]);
  54. %
  55. % for i = 1:N
  56. % por(i) = (1 / (sigma * sqrt(2 * pi))) * exp ( -(X(i) - imu)^2 / ( 2 * sigma^2 ) );
  57. % end
  58. % clear i;
  59. %
  60. % pfun = prod(por);
  61.  
  62. %создаем функцию
  63. pfun = (1 / (sigma * sqrt(2 * pi)))^N * exp ( sum( -(X - imu) .^2 ./ ( 2 * sigma^2 ) ) );
  64.  
  65. %ищем логарифм от функции
  66. Lg= log(pfun);
  67. %получаем значения, в которых производная равна нулю ( максимум )
  68. dLg = diff(Lg, sigma);
  69. eq0_dLg = dLg == 0;
  70.  
  71. %построение функции, работает только для N ~ 1000
  72. figure;
  73. hold on;
  74. fplot(Lg, sigma);
  75. hold off;
  76.  
  77. %производим оценку параметра
  78. ans_solve_sigma = abs(double(vpasolve(dLg, sigma)));
  79.  
  80. %{
  81. 2.3. Оценить дисперсию, смещение и рассеяние оценки параметра по 100 выборочным реализациям
  82. %}
  83.  
  84. n = 100;
  85.  
  86. mean_100 = linspace(1, n);
  87. var_100 = linspace(1, n);
  88.  
  89. for i = 1:n
  90.    
  91.     rng shuffle;
  92.     X_100 = random(type, imu, isigma, N, 1);
  93.    
  94.     mean_100(i) = 1/mean(X_100);
  95.     var_100(i) = moment(X_100, 2);
  96.    
  97. end
  98. clear i;
  99.  
  100. ans_mean_m = mean(mean_100) - mean(X);
  101. ans_mean_v = mean(var_100) - mean(X);
  102. ans_var_m = var(mean_100);
  103. ans_var_v = var(var_100);
  104. ans_rass_m = mean((mean_100 - mean(X)).^2);
  105. ans_rass_v = mean((var_100 - mean(X)).^2);
  106.  
  107. clear n;
  108.  
  109. %генерация двух дополнительных выборок с использованием параметров,
  110. %полученных в результате точечных оцениваний:
  111.  
  112. X_sigmacustom1 = random(type, imu, ans_sigma, 1, N);
  113. X_sigmacustom2 = random(type, imu, ans_solve_sigma, 1, N);
  114.  
  115. %{
  116. 3. Расчет гистограммы относительных частот.
  117. 3.1. Построить гистограмму по уже описанному в первой лабораторной работе алгоритму
  118. %}
  119.  
  120. X_max = max(X);
  121. X_min = min(X);
  122.  
  123. r = floor(log2(N) + 1);
  124. h = (X_max - X_min) / r;
  125.  
  126. z = zeros(0,r);
  127.  
  128. for i = 0:r
  129.     z(i+1) = X_min + i*h;
  130. end
  131.  
  132. clear i;
  133.  
  134. zX = zeros(1, r);
  135.  
  136. for i = 1:r
  137.     zX(i) = z(i+1) - h/2;
  138. end
  139.  
  140. clear i z;
  141.  
  142. U = hist(X, zX);
  143.  
  144. H_X = U / (h*N);
  145.  
  146. %{
  147. 3.2. Нанести на один и тот же график плотность вероятности того теоретического распределения,
  148. из которого генерируется выборка
  149. 3.3 Нанести на тот же график плотность вероятности того теоретического распределения,
  150. из которого генерируется выборка но вместо истинного значения параметра, подставить оценку,
  151. полученную ранее с использованием одного из методов точечного оценивания.
  152. %}
  153.  
  154. max_X = max(X);
  155.  
  156. x = 0:0.1:max_X;
  157.  
  158. y = pdf(type, x, imu, isigma);
  159.  
  160. y1 = pdf(type, x, imu, ans_sigma);
  161.  
  162. y2 = pdf(type, x, imu, ans_solve_sigma);
  163.  
  164. figure
  165. hold on
  166. bar(zX, H_X, 1);
  167. plot(x,y,':','Color',[0 0.4470 0.7410],'LineWidth',1.5);
  168. plot(x, y1,'--.','Color',[1 0 1],'LineWidth',1.5);
  169. plot(x, y2,'-.','Color',[0.6350 0.0780 0.1840],'LineWidth',1.5);
  170. hold off
  171. title('Пункты 3.2, 3.3');
  172. legend({'Гистограмма', 'Плотность', 'Плотность(сигма 1)', 'Плотность(сигма 2)',}, 'Location','northeast');
  173. grid on
  174. %{
  175. 3.4 Сделать выводы
  176. %}
  177.  
  178. %{
  179. 4. Расчет эмпирической функции распределения.
  180. Выполнить расчет эмпирической функции распределения для негруппированных данных.
  181. Также, необходимо рассчитать и построить вместе с этой функцией график теоретической функции того распределения,
  182. из которого выборка генерировалась с заданными в условии параметрами.
  183. И построить график теоретической функции распределения, подставив вместо истинного значения параметра его оценку.
  184. Сравнить все представленные функции и сделать выводы
  185. %}
  186.  
  187. y_cdf1 = cdf(type, x, imu, isigma);
  188. y_cdf2 = cdf(type, x, imu, ans_sigma);
  189. y_cdf3 = cdf(type, x, imu, ans_solve_sigma);
  190.  
  191. figure;
  192. hold on
  193. plot(x,y_cdf1,':','Color',[0 0.4470 0.7410],'LineWidth',1.5);
  194. plot(x, y_cdf2,'--.','Color',[1 0 1],'LineWidth',1.5);
  195. plot(x, y_cdf3,'-.','Color',[0.6350 0.0780 0.1840],'LineWidth',1.5);
  196. hold off
  197. title('Эмпирическая функция распределения');
  198. legend({'Стандартная', 'Измененная сигма 1', 'Измененная сигма 2'},'Location','southwest')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement