Простешие возможности и синтаксис R

R как калькулятор

2*2
## [1] 4
sin(pi)
## [1] 1.224647e-16

Переменные

x <- 2
5 -> y
x+y
## [1] 7

Так тоже можно использовать знак =, но не рекомендуется из-за соображений совместимости и стиля (см. также тут про разные способы приравниваний в R):

q=2
q+3
## [1] 5

Списки

l <- c(1,2,3,5,7,11)
print(l*2)
## [1]  2  4  6 10 14 22
print(sum(l))
## [1] 29
q=1:10
print(q)
##  [1]  1  2  3  4  5  6  7  8  9 10
print(sum(q))
## [1] 55

Картинки

x <- c(1,3,4)
y <- c(2,5,0)
plot(x,y)


Так мы нарисовали три точки с координатами соответственно \((1;2)\), \((3;5)\), \((4;0)\).

x <- 0:10
y <- sin(x) # поэлементно применили синус
print(y)
##  [1]  0.0000000  0.8414710  0.9092974  0.1411200 -0.7568025 -0.9589243
##  [7] -0.2794155  0.6569866  0.9893582  0.4121185 -0.5440211
plot(x,y)

x <- seq(0,10,by=0.1) # последовательность с шагом 0.2
print(x)
##   [1]  0.0  0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8  0.9  1.0  1.1  1.2  1.3
##  [15]  1.4  1.5  1.6  1.7  1.8  1.9  2.0  2.1  2.2  2.3  2.4  2.5  2.6  2.7
##  [29]  2.8  2.9  3.0  3.1  3.2  3.3  3.4  3.5  3.6  3.7  3.8  3.9  4.0  4.1
##  [43]  4.2  4.3  4.4  4.5  4.6  4.7  4.8  4.9  5.0  5.1  5.2  5.3  5.4  5.5
##  [57]  5.6  5.7  5.8  5.9  6.0  6.1  6.2  6.3  6.4  6.5  6.6  6.7  6.8  6.9
##  [71]  7.0  7.1  7.2  7.3  7.4  7.5  7.6  7.7  7.8  7.9  8.0  8.1  8.2  8.3
##  [85]  8.4  8.5  8.6  8.7  8.8  8.9  9.0  9.1  9.2  9.3  9.4  9.5  9.6  9.7
##  [99]  9.8  9.9 10.0
plot(x,sin(x))

plot(x,sin(x),type='l')


Есть и другие способы (например, curve, но о них позже).

Теория вероятностей в R

Функция sample и подкидывание монетки

s <- sample(c(0,1),10,replace=TRUE)
s
##  [1] 0 0 1 0 0 0 0 0 0 0

Это реализация «урновой схемы с возвращением» (replace=TRUE). Проверим-ка закон больших чисел.

s <- sample(c(0,1),1000,replace=TRUE)
sum(s) # так можно посчитать число выпавших «орлов» (единичек)
## [1] 525

Но вообще для этого лучше использовать table:

table(s)
## s
##   0   1 
## 475 525

Биномиальное распределение

Напомним, что случайная величина, распределенная биномиально с параметрами \(n\) и \(p\)$ — это число выпавших «орлов» при подбрасывании монетки \(n\) раз, если вероятность выпадения орла равна \(p\) (часто также говорят «число успехов» и «вероятность успеха»).

В R для каждого распределения есть четыре функции, начинающиеся с букв d, p, q, r, которые задают, соответственно, функции плотности (density), распределения (probability), квантилей (quantile) и генерирования выборки (random).

print(dbinom(1,3,0.5)) # вероятность получить ровно одного (1) орла при подбрасывании честной (0.5) монетки 3 раза
## [1] 0.375
print(pbinom(1,3,0.5)) # вероятность получить хотя бы 1 орла
## [1] 0.5
print(qbinom(0.5,3,0.5)) # функция, обратная к pbinom
## [1] 1
print(rbinom(10,3,0.5)) # сгенерировать 10 чисел, полученных как реализация данной случайной величины
##  [1] 2 0 1 1 1 2 2 2 0 1
n <- 4
x <- 0:n
plot(x,dbinom(x,n,0.5))

Нормальное распределение

Аналогичные 4 функции есть для нормального распределения.

print(dnorm(0))
## [1] 0.3989423
print(pnorm(0))
## [1] 0.5
print(qnorm(0.5))
## [1] 0
print(rnorm(0.5))
## numeric(0)

Картинки!

x=seq(-5,5,by=0.01)
plot(x,dnorm(x),type='l')

plot(x,dnorm(x,mean=1),type='l') # можно менять среднее

plot(x,dnorm(x,mean=1,sd=0.5),type='l') # и стандартное отклонение

Задачи

Разбирали в классе

  1. Написать скрипт на R, рисующий график функции dbinom для различных n и p. Нарисовать графики для n=5, 10, 100, 200 и p=0.5, 0.3, 0.1.
  2. Случайная величина распределена по стандартному гауссову закону. Какова вероятность того, что она находится на отрезке \([-0{,}5; 1]\)?

На дом

  1. Вычислить сумму квадратов натуральных чисел от 1 до 100. (Подсказка: сначала нужно сделать список, состоящий из квадратов натуральных чисел от 1 до 100, а потом найти его сумму; операции со списками часто работают поэлементно.)
  2. Нарисовать график функции \(y=x^2+2x+1\).
  3. Нарисовать график функции pnorm. Что он означает? Как он связан с графиком dnorm?
  4. Честную монетку подкинули 201 раз. Какова вероятность того, что она упала орлом вверх меньше 96 раз? Вычислить ответ с помощью pbinom, а также с помощью pnorm (используя интегральную теорему Муавра—Лапласа).
  5. Нарисовать на одной картинке график функции dbinom для n=10, p=0.5 и график плотности нормального распределения со средним \(5\) и стандартным отклонением \(sd=\sqrt{10\cdot 0{,}5\cdot 0{,}5}\). (Чтобы добавить кривую к уже нарисованной картинке, вместо plot следует использовать функцию lines.) Пояснить результат. Как следует поменять параметры нормального распределения, если вместо n=10 взять n=20?