library("ggplot2") # Пакет для красивых графиков # Если вы работаете в R-studio, вы можете избежать подгрузки пакетов ниже # Отрегулируем размер картинок, которые будут выдаваться в нашей тетрадке library('repr') library("grid") # Пакет для субплотов options(repr.plot.width=4, repr.plot.height=3) x <- rnorm(1000, mean=5, sd=3) # если дисперсия 9, то стандартное отклонение 3 x[10:20] mean(x) # среднее выборочное (при больших n похоже на математическое ожидание) var(x) # выборочная дисперсия sd(x) # выборочное стандартное отклонение median(x) # выборочная медиана qplot(x) # гистограма #построим функцию плотности x <- seq(-5, 15, by=0.01) y <- dnorm(x, mean=5, sd=3) qplot(x, y, geom="line") pnorm(3, mean=5, sd=3) pnorm(9, mean=5, sd=3) - pnorm(4, mean=5, sd=3) qnorm(0.7, mean=5, sd=3) x <- c(0.95, 0.975, 0.995) qnorm(x, mean = 0, sd = 1) x <- c(0.95, 0.975, 0.995) qt(x, df=10) rnorm(20) # конечно выборку N(0,1) n_obs <- 10^6 x <- rnorm(n_obs, mean = 5, sd = 3) mean(1/x) n_obs <- 10^6 x_1 <- runif(n_obs, min = 0, max = 2) x_2 <- runif(n_obs, min = 0, max = 2) x_3 <- runif(n_obs, min = 0, max = 2) success <- x_1 + x_2 + x_3^2 > 5 sum(success) / n_obs uslovie <- x_3 < 0.1 uslovie[1:10] # можно посмотреть сколько раз за всю симуляцию x_3 < 0.1 sum(uslovie) # ищем успех при условии success <- x_1[uslovie] + x_2[uslovie] > 0.8 sum(success)/ n_obs sample(1:10, size = 5) sample(1:10, size = 5, replace = TRUE) sample(c("Орёл", "Решка"), size = 10, replace = TRUE, prob = c(0.3, 0.7)) x <- sample(c("Орёл", "Решка"), size = 10^6, replace = TRUE, prob = c(0.3, 0.7)) sum(x == 'Орёл')/length(x) qrnorm(1, mean = 2, sd = 3) rnorm(1, mean = 2, sd = 3) picture <- function(x){ df = data.frame(sample = x) # Размеры картинки options(repr.plot.width=8, repr.plot.height=3) binwidth = 1 # ширина бинов p1 = ggplot(df, aes(x = sample, binwidth = binwidth))+ # Наносим гистограмму geom_histogram(aes(y=..density..), binwidth = binwidth, colour = "white", fill = "cornflowerblue", size = 0.1) # цвет линий разделителей, заливка, толщина линий разделителей p2 = ggplot(df, aes(x = sample, binwidth = binwidth))+ stat_ecdf(color = "darkred", size = 1) # Располагаем графики рядом. Этот код нужен только для юпитерской тетрадки. pushViewport(viewport(layout = grid.layout(1, 2))) print(p1, vp = viewport(layout.pos.row = 1, layout.pos.col = 1)) print(p2, vp = viewport(layout.pos.row = 1, layout.pos.col = 2)) } n = 1000 # Биномиальное распределение, Binom(size, p) size = 20 p = 0.5 x <- rbinom(n, size = size, prob = p) picture(x) n = 1000 # Распределение Пуассона, Pois(lambda) lambda = 3 x <- rpois(n, lambda = lambda) picture(x) n = 1000 # Геометрическое распределение, Geom(p) p = 0.1 x <- rgeom(n, prob = p) picture(x) n = 1000 # Произвольное дискретное распределение x <- sample(c(1,2,3,4), size = n, replace = TRUE, prob = c(0.1, 0.4, 0.2, 0.2)) picture(x) picturec <- function(x, f, fun_arg){ df = data.frame(sample = x) # Размеры картинки options(repr.plot.width=8, repr.plot.height=3) binwidth = 1 # ширина бинов p1 = ggplot(df, aes(x = sample, binwidth = binwidth))+ # Наносим гистограмму geom_histogram(aes(y=..density..), binwidth = binwidth, colour = "white", fill = "cornflowerblue", size = 0.1)+ # цвет линий разделителей, заливка, толщина линий разделителей # Наносим плотность распределения stat_function(fun = f, args = fun_args, color = "darkred", size = 1) p2 = ggplot(df, aes(x = sample, binwidth = binwidth))+ stat_ecdf(color = "darkred", size = 1) + # Располагаем графики рядом. Этот код нужен только для юпитерской тетрадки. pushViewport(viewport(layout = grid.layout(1, 2))) print(p1, vp = viewport(layout.pos.row = 1, layout.pos.col = 1)) print(p2, vp = viewport(layout.pos.row = 1, layout.pos.col = 2)) } n = 10000 # Нормальное распределение, N(mu, sigma) mu = 0; sigma = 1 x <- rnorm(n, mean = mu, sd = sigma) f <- dnorm fun_args <- list(mean = mu, sd = sigma) picturec(x,f,fun_args) n = 10000 # Экспоненциальное распределение, Exp(alpha) alpha = 0.1 x <- rexp(n, rate = alpha) f <- dexp fun_args <- list(rate = alpha) picturec(x,f,fun_args) # Равномерное распределение, U[mn;mx] mn=0; mx=24 x <- runif(n, min = mn, max = mx) f <- dunif fun_args <- list(min = mn, max = mx) picturec(x,f,fun_args) rchisq(5, df=10) # Хи-квадрат rt(5, df=10) # Стьюдента rf(5, df1=10, df2=5) # Фишера (F-распределение) n = 10^4 X1 <- runif(n, min = -1, max = 1) X2 <- runif(n, min = -1, max = 1) X3 <- runif(n, min = -1, max = 1) X4 <- runif(n, min = -1, max = 1) X5 <-runif(n, min = -1, max = 1) options(repr.plot.width=4, repr.plot.height=3) qplot(X1, bins = 70) # гистограма qplot(X1 + X2, bins = 70) qplot(X1 + X2 + X3, bins = 70) qplot(X1 + X2 + X3 + X4 +X5, bins = 70)