Начало работы Реализация метода Монте – Карло

advertisement
Начало работы
1. Загрузите новый скрипт (Файл – Новый скрипт)
2. Записывайте команды в окне для скрипта
3. Для активации команды установите курсор на строке с нужной командой и
нажмите Ctrl+R
4. Помните, что в названиях переменных, как и в названиях команд важен регистр!
Реализация метода Монте – Карло
Генерирование случайной выборки:
 из нормального закона: rnorm(n, EX, DX ), где n – объем выборки, EX –
популяционное среднее (мат.ожидание),
DX – популяционное стандартное
отклонение
1
 из показательного закона: rexp(n,
), где n – объем выборки, EX –
EX
популяционное среднее (мат.ожидание)
 из распределения Пуассона: rpois (n, EX), где n – объем выборки, EX –
популяционное среднее (мат.ожидание)
 из биномиального закона: rbinom(n, N, p), где n – объем выборки, N – число
испытаний в серии испытаний Бернулли, p – вероятность успеха в одном
испытании Бернулли.
Вычисления:
 сложение +
 вычитание –
 умножение *
 деление /
 возведение в степень ^ (например, x2 – это x^2)
 извлечение квадратного корня sqrt(x), где x – это число (или вектор), из которого
нужно извлечь квадратный корень. В случае вектора корень извлекается из каждой
компоненты вектора
Подсчет числа наблюдений в массиве данных:
Поскольку получаемый массив данных воспринимается оболочкой R как вектор или
матрица, то для подсчета числа наблюдений, нужно подсчитать, сколько компонент
содержит соответствующий вектор. Для этого нужно набрать команду length(x), где x –
это соответствующий вектор.
Порождение последовательности чисел:
 Для генерирования последовательности натуральных чисел от 1 до 10 наберите
1:10 либо seq(1,10)
 Для генерирования последовательности натуральных чисел от 1 до 10 с шагом в 2
единицы наберите seq(1,10, 2)
Вычисление простейших описательных статистик:
 среднее: mean(x), где x – название Вашего массива данных
 дисперсия: var(x), где x – название Вашего массива данных
 стандартное отклонение: sd(x), где x – название Вашего массива данных
1



медиана: median(x), где x – название Вашего массива данных
квартили: quantile(x), где x – название Вашего массива данных
межквартильный размах: IQR(x), где x – название Вашего массива данных
Порождение матриц:



 1 2 3


Если Вы хотите руками ввести некоторую матрицу А, такую что A   4 5 6  ,
7 8 9


нужно набрать команду A <– matrix(c(1,2,3,4,5,6,7,8,9), nrow=3, byrow=T).
Объект c(1,2,3,4,5,6,7,8,9) указывает тот вектор значений, который будет
преобразован в матрицу.
nrow=3 указывает число строк (nrow – это number of rows)
В записи byrow=T выражение byrow означает, что заполнять матрицу нужно по
строкам, а символ T – это сокращение от True. Т.е. Вы подтверждаете, что
заполнение матрицы должно производиться по строкам.
1 4 7


Если Вы хотите руками ввести некоторую матрицу B, такую что B   2 5 8  , то
3 6 9


можно:
o либо написать: B <– matrix(c(1,2,3,4,5,6,7,8,9), nrow=3, byrow=F), где F
означает False (т.е. заполнение матрицы не должно происходить по строкам)
o либо написать: B <– matrix(c(1,2,3,4,5,6,7,8,9), 3, 3), где первая тройка после
объекта c(1,2,3,4,5,6,7,8,9) означает число строк, а вторая тройка – число
столбцов
Если Вам нужно создать пустую матрицу с n строками и k столбцами, то нужно
набрать команду matrix(NA, n, k), где NA (Not Available) означает, что массив
данных изначально отсутствует.
Выделение конкретных наблюдений в массиве данных:
 Если ваш массив, имеющий название dannie, является матрицей, то для выделения
наблюдения, стоящего в первой строке и втором столбце наберите dannie[1,2]
 Для выделения всей первой строки в массиве данных, имеющем название dannie,
наберите dannie[1,]
 Для выделения всего второго столбца в массиве данных, имеющем название dannie,
наберите dannie[,2]
Написание функций:
Написать программу в оболочке R значит написать некоторую функцию (алгоритм).
Пусть Вы хотите написать некоторую функцию F. Тогда Вы пишете:
F <– function(x) {
}
F(data)
Между фигурными скобками указывается последовательность команд, которые
будут выполняться компьютером при запуске программы (напомню, что для запуска
потребуется нажать Ctrl+R на каждой строке скрипта, содержащей команды, относящиеся
к создаваемой программе).
Скобка } обозначает окончание написания программы. Следующая строка указывает,
какой именно массив данных должен быть подвергнут анализу в соответствии с
написанной программе. В данном примере анализируемый массив данных носит название
2
data; компьютер возьмет этот массив данных из оперативной памяти и последовательно
подставит его вместо x во все команды алгоритма.
Перед закрывающей скобкой } должна быть указана команда return(y), где y – это
тот объект, который необходимо вывести на монитор в качестве результата работы
алгоритма.
Написание циклической команды:
Нижеприведенная команда позволяет многократно (циклически) производить один и
тот же набор операций:
for (i in 1:x) {
}
В содержании команды должно учитываться, что нижним индексом, пробегающим
значения от 1 до x , является индекс i. Что касается икса, то им может быть конкретное
число, указанное сразу; либо это может быть тот x, для которого пишется вся программа и
который будет указан позднее.
Домашнее задание
Дать приблизительный ответ на вопрос о том, насколько исследователь может
ошибаться, строя 95%-ные нормальные доверительные интервалы для среднего из
ненормальной генеральной совокупности.
Для ответа на вопрос использовать схему многократного сэмплинга путем
реализации метода Монте – Карло.
В качестве ненормальных законов, из которых извлекаются выборки, использовать
показательное, биномиальное распределения и распределение Пуассона. В случае
биномиального распределения параметр N не должен превышать 50 (чтобы избежать
большого сходства биномиального и нормального распределений).1 По аналогичной
причине в распределении Пуассона не использовать среднее, превышающее 7.2
Реализовать сэмплинг как из показательного распределения, так и из биномиального
и распределения Пуассона.
Использовать выборки объемом 1000 наблюдений.
Извлекать по 100 выборок.
Домашнее задание должно быть выполнено в Microsoft Word. Оно должно содержать
четыре раздела: «Доверительные интервалы для среднего из показательного
распределения», «Доверительные интервалы для среднего из биномиального
распределения», «Доверительные интервалы для среднего из распределения Пуассона»,
«Приложение».
В каждом разделе должна быть описана схема сэмплинга, указаны параметры
заданного распределения, указано число 95%-ных доверительных интервалов,
содержащих истинное значение математического ожидания.
В Приложении должен быть приведен полный текст выдачи пакета R из окна R
Console. Для переноса текста из пакета R в Microsoft Word используйте обычное
выделение и «копи-паст». Приложение должно быть «раскрашено» так же, как в окне R
Console (т.е. команды – красным цветом; результат – синим).
NB! Не выводите на монитор сами случайные выборки!!
Enjoy computing! 
1
Правило для нормальной аппроксимации биномиального распределения таково: N должно быть больше
100.
2
Нормальную аппроксимацию распределения Пуассона на практике рекомендуется использовать при
среднем, превышающем 9 (см.: Тюрин, Макаров, Симонова, стр. 155).
3
Download