# В следващите задачи намерете приближение на търсените вероятности чрез подходящи симулации ex1 <- function() { balls <- sample(seq(1, 8, 1), 2, replace=T) balls[1] == balls[2] } sum(replicate(10000, ex1())) / 10000 ex2 <- function() { socks <- sample(rep(seq(1, 3, 1), times=2), 2, replace=F) socks[1] == socks[2] } sum(replicate(10000, ex2())) / 10000 ex3 <- function() { tried_keys <- sample(c(1, 0, 0, 0), 4, replace=F) tried_keys[4] } sum(replicate(100000, ex3())) / 100000 ex4 <- function() { questions <- sample(append(rep(1, times=17), rep(0, times=3)), 2, replace=F) sum(questions) == 1 } sum(replicate(100000, ex4())) / 100000 ex5 <- function() { birthdays <- sample(seq(1, 365, 1), 25, replace=T) sum(duplicated(birthdays)) > 0 } sum(replicate(100000, ex5())) / 100000 ex6 <- function() { presents <- sample(seq(1, 20, 1), 20, replace=F) 0 %in% (presents - seq(1, 20, 1)) } sum(replicate(100000, ex6())) / 100000 ex7 <- function() { ants <- c(sample(c(2, 3), 1), sample(c(1, 3), 1), sample(c(2, 3), 1)) sum(ants) == 6 } sum(replicate(100000, ex7())) / 100000 ex8 <- function(cmp) { eggs <- c(rep(0, times=6), rep(1, times=2)) samp <- sample(eggs, 8, replace=F) cmp(samp[seq(1, 7, 2)], samp[seq(2, 8, 2)]) } sum(replicate(100000, ex8(function(first, second) { sum(first) == 2 | sum(second) == 2 }))) / 100000 sum(replicate(100000, ex8(function(first, second) { sum(first) == 1 }))) / 100000 sum(replicate(100000, ex8(function(first, second) { sum(first) == 2 }))) / 100000 sum(replicate(100000, ex8(function(first, second) { sum(second) == 1 }))) / 100000 ex9 <- function() { answers <- sample(c(0, 0, 0, 1), 10, replace=T) sum(answers) >= 5 } sum(replicate(100000, ex9())) / 100000 ex10 <- function() { ontime <- sample(c(0, 1), 143, replace=T, prob=c(0.08, 0.92)) sum(ontime) <= 138 } sum(replicate(100000, ex10())) / 100000 ex11 <- function() { if (sample(seq(1, 6, 1), 1) == 6) { sample(c(1, 1, 0, 0), 1) == 1 } else { sample(c(1, 0, 0, 0, 0), 1) == 1 } } sum(replicate(100000, ex11())) / 100000 ex12 <- function() { coin <- sample(c(11, 11, 22, 12, 12), 1) if (coin == 11) { T } else if (coin == 22) { F } else { sample(c(T, F), 1) } } sum(replicate(100000, ex12())) / 100000 # В следващите задачи намерете вероятностите като използвате вградените функции, свързани с дискретни разпределения. # P(X = x) := d...(x, ...) # P(X <= x) := p...(x, ...) # ex18 # Биномно : брой успехи от n опита dbinom(2, 10, 1/6) pbinom(2, 10, 1/6) 1 - pbinom(2, 10, 1/6) pbinom(8, 10, 1/6) - pbinom(3, 10, 1/6) # ex19 # Геометрично : брой **неуспехи** до първи успех pgeom(9, 1/6) 1 - pgeom(4, 1/6) # ex20 # Отрицателно биномно : брой **неуспехи** до r-ти успех 1 - pnbinom(20-3, 3, 1/6) # ex21 # Хипергеометрично : от маркирани и немаркирани в извадка, броя маркирани 1 - dhyper(2, 5, 3, 2) # ex22 # Поасоново : средно толкова събитие на единица време, колко събития за мн време ppois(2, 5 * 300 / 500) ppois(3, 5 * 300 / 500) - ppois(0, 5 * 300 / 500) # ex23 1 - dbinom(4, 10, 1/4) # ex24 pbinom(138, 143, 0.92) dbinom(137, 143, 0.92) # ex25 pgeom(10-1, 0.03) 1 - dbinom(1, 50, 0.03) # ex26 1 - phyper(1, 3, 97, 50) # ex27 1 - phyper(1, 90, 2910, 50) # ex28 1 - ppois(4, 1/10) 1 - pnbinom(39, 10, 1/10) # *** # ex32 runif(500, min=2, max=3) # ex38 A.p <- 1 - pnorm(250, 252, 3) B.p <- pbinom(2, 5, A.p) # ex39 # *** # ex67 # успех, общо--| |--хипотеза---| prop.test(32, 58, 0.51, "greater") # prop.test проверява дали вероятност е валидна # ex68 # нормално разпределение t.test(c(3.1, 3.0, 3.7, 2.6, 4.2, 3.8, 3.6, 2.7, 3.8, 4.4), mu=4, alternative="less") # t.test проверява средните стойности между две м-ва данни # paired=T ако са зависими # *** # ex88 chisq.test(c(28, 36, 36, 30, 27, 23), p=rep(1/6, times=6)) # chisq.test проверява измервания с мат модел # Минали изпити # ex1 ex1 <- function() { throws <- sample(seq(1, 6, 1), 4, replace=T) sum(throws[c(1,2)]) > sum(throws[c(3,4)]) } sum(replicate(100000, ex1())) / 100000 # ex2 prop.test(15, 500, p=0.035, alternative="less", correct=T) # alternative is "less", so first one # 0.3132 > 0.05 => null hypothesis is correct => alternative is false # ex3 t.test(a1, a2, alternative="greater", paired=T) # paired t-test е, оценката по алгебра 1 и алгебра 2 са зависими # ex4 # оценено регресионно уравнение # grade = beta_0 + beta_1 * study.hours + epsilon # grade = 1.01617 + 0.15806 * study.hours # за всеки час учене, оценката се вдига с 0.15806 # 2.9e-12 < 0.05 => null hypothesis is incorrect => alternative is true