Guest User

Untitled

a guest
Dec 11th, 2015
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.44 KB | None | 0 0
  1. # Функция распределения арксинус-распределения.
  2. F1 = function(x)
  3. {
  4. if (abs(x) <= 3)
  5. { return (1/2 + asin(x/3)/pi); }
  6. else if (x > 3)
  7. { return (1); }
  8. else
  9. { return (0); }
  10. }
  11.  
  12. # Функция находит с заданной точностью Err
  13. # значение x: f(x) = alpha.
  14. # Используется для f - непрерывного распределения С.В.
  15. # (Нужна, чтобы по преобразованию Смирнова сделать выборку из арксинус-распределения)
  16. SolveF = function(alpha, Err = 0.0001, f = F1)
  17. {
  18. # С.В распределена на (-3, 3)
  19. a = -3;
  20. b = 3;
  21. # значение ошибки в данный момент времени
  22. err = 1000;
  23. # Пока ошибка больше допустимой, выбираем новые границы, пользуясь строгой монотонностью.
  24. while(err > Err)
  25. {
  26. m = (a + b) / 2;
  27. if(f(m) >= alpha)
  28. { b = m; }
  29. else
  30. { a = m; }
  31. # Новое значение функции -- середина новой границы.
  32. err = abs(f((a + b) / 2) - alpha);
  33. }
  34. return ((a + b) / 2);
  35. }
  36.  
  37. # Преобразованием Смирнова сделаем выборку из N элементов арксинус-распределения
  38. rasin = function(N, f = F1)
  39. {
  40. preob = c(1:N)
  41. for(i in 1:N) {preob[i] = SolveF(runif(1))}
  42. return (preob)
  43. }
  44.  
  45. # Теперь можем получить итоговую выборку из нашей смеси
  46. rsmes = function(N)
  47. {
  48. return ( 0.6*rnorm(N, mean = 0, sd = 3) + 0.4*rasin(N) )
  49. }
  50.  
  51. # Рисует графики
  52. Graphics = function(A)
  53. {
  54. #Эмпирическая функция распределения
  55. plot(sort(A), ((1:length(A))/length(A)), type="l", col="seagreen", xlab="", ylab="");
  56. x = seq(-25, 25, by = 0.001);
  57. y = 0.6*pnorm(x, mean = 0, sd = 3) + 0.4*sapply(x, F1);
  58. lines(x, y, type="l", col="orange");
  59. }
  60.  
  61. # Дисперсия
  62. Disp = function(A)
  63. {
  64. X = mean(A);
  65. return ( mean((A - X)^2) )
  66. }
  67.  
  68. # Выборочный центральный момент к-того порядка
  69. M = function(A, k)
  70. {
  71. X = mean(A);
  72. return ( mean((A - X)^k) );
  73. }
  74.  
  75. # Ищет доверительный интервал.
  76. # alpha -- доверительная вероятность
  77. Assymp = function(A, alpha)
  78. {
  79. zp = qnorm(1 - alpha/2);
  80. S = sqrt(Disp(A));
  81. X = mean(A);
  82. N = length(A);
  83. #Границы Матожидания
  84. GM = c("МО",X - zp*(S/sqrt(N)), X + zp*(S/sqrt(N)));
  85. #Границы дисперсии
  86. GD = c("Дисперсия", S^2 - zp*sqrt(M(A, 4) - (M(A, 2))^2)/sqrt(N), S^2 + zp*sqrt(M(A, 4) - (M(A, 2))^2)/sqrt(N))
  87. print(GM);
  88. print(GD);
  89. }
  90.  
  91. # N -- Объем выборки
  92. Main = function(N)
  93. {
  94. # print("Моя выборка (упорядоченная):");
  95. A = sort(rsmes(N));
  96. # print(A);
  97. print("Мат.ожидание смеси: 0");
  98. print("Выборочное среднее выборки:")
  99. meanA = mean(A);
  100. print(meanA);
  101. print("Дисперсия: 7.2");
  102. print("Выборочная дисперсия:")
  103. sdA = Disp(A);
  104. print(sdA);
  105. Graphics(A);
  106. print("доверительня вероятность 0.9");
  107. Assymp(A, 0.1);
  108. print("доверительня вероятность 0.95");
  109. Assymp(A, 0.05);
  110. print("доверительня вероятность 0.9974");
  111. Assymp(A, 1-0.9974);
  112. }
Advertisement
Add Comment
Please, Sign In to add comment