Как я могу понять код двух раздач R? - PullRequest
0 голосов
/ 12 октября 2019

У меня есть этот код:

df1<-tibble(x = sort(rnorm(1e5)),
       cumulative = cumsum(abs(10-x)/sum(abs(10-x)))/2.5)
df2<-tibble(x1 = sort(rbinom(1e5,1e5, 0.001)/1e5))

, который был опубликован в моем предыдущем вопросе . После некоторого исследования я все еще не могу понять несколько вещей, и я буду очень рад, если кто-то объяснит это для меня:

  1. Какие параметры у нас есть при df1 распределении?
  2. Какие параметры у нас есть при df2 распределении? Почему мы должны делить на 1e5 и на какой формуле он основан?
  3. Почему мы должны использовать 10 в таком объеме - (10-x) и 2,5 также.

Я будурад, если кто-то объяснит мне эти вопросы.

1 Ответ

1 голос
/ 12 октября 2019

Я думаю, что ответ на ваш предыдущий вопрос неправильный и вводящий в заблуждение, хотя, если честно, вы не очень четко задали вопрос.

Я думаю, вы, вероятно, пытаетесь сравнить биномиальное распределение с нормальным приближением к нему. Бином - это количество успехов, которые вы получаете, если вы делаете что-то N раз, и вероятность того, что вы добьетесь успеха, равна p. Среднее значение этого параметра - Np, а стандартное отклонение - sqrt (Np (1-p)), которое можно использовать для приближения его к нормальному распределению.

Один из способов их сравнения с использованием ggplot будетбыть таким ...

library(tidyverse)

trials <- 100   #i.e. N in the explanation above
prob <- 0.1     #i.e. p in the explanation above
sims <- 100000  #the number of simulations you want (1e5 in your previous question)

df <- tibble(n = 1:sims,
             normal = sort(rnorm(sims,                               #no of variates
                                 trials * prob,                      #mean
                                 sqrt(trials * prob * (1-prob)))),   #standard deviation
             binomial = sort(rbinom(sims, 
                                    trials, 
                                    prob))) 

Затем, чтобы сравнить (дискретную) гистограмму биномиального распределения (красным) с (непрерывной) плотностью нормального приближения (синим), вы можете сделать

df %>% ggplot() + 
  geom_density(aes(x = normal), 
               alpha = 0.5, 
               fill = "blue") +
  geom_histogram(aes(x = binomial, 
                     y = stat(density)), #normalises scale to sum to 1 
                 alpha = 0.5, 
                 fill = "red", 
                 binwidth = 1)

enter image description here

И сравнить кумулятивные распределения (используя тот факт, что мы отсортировали переменные в нашем фрейме данных) ...

df %>% ggplot(aes(y = n/sims)) + 
  geom_line(aes(x = normal), 
            colour = "blue") +
  geom_line(aes(x = binomial), 
            colour = "red")

enter image description here

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...