2015-11-22 2 views
1

мне нужно генерировать случайные значения, которые представляют раз (в секундах), которые следуют логарифмически нормальным распределением с:Логнормальное усечен распределение с R, случайные величины

Min: 120 seconds 
Max: 1260 seconds 
Mean: 356 seconds 
SD: 98 seconds 

Я генерирующего 100 случайных чисел:

library(EnvStats) 
sample1 <- rlnormTrunc(100,356,98,120,1260) 

, и когда я вычислил среднее значение, это не 356, но выше, примерно 490 секунд. Зачем?

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

У кого-нибудь есть ответ на это?

+0

Разве у вас не будет другого значения при каждом запуске? например, среднее значение (rnorm (100, среднее = 356, sd = 10)). Среднее значение среднего значения, однако, равно 356, которое обычно распределяется в соответствии с CLT, верно? – aatrujillob

+0

Спасибо за ваш ответ. Если я использую среднее значение (rnorm (100, mean = 356, sd = 98)), я получаю среднее значение = 356, что я хочу ... Я получаю почти то же значение каждый раз, когда я запускаю эту строку. Почему тогда я не получаю то же значение, когда я запускаю среднее значение (rlnormTrunc (1000,356,98,120,1260)) – Pabs88

+0

Вам нужно добавить вызов библиотеки для любого пакета, который имеет эту функцию, и вам нужно просмотреть страницу справки, чтобы определить, какие параметры устанавливаются с этим вызовом. Если у вас есть параметры для логнормального распределения с определенным средним значением, и вы усекаете его на LHS, тогда вы ожидаете, что выбранные значения будут иметь более высокое значение. –

ответ

3

Причина в том, что вы сравниваете разные распределения, поэтому, когда вы создаете случайные числа из этих распределений, их среднее значение различно. Если мы возьмем в качестве примера нормального распределения затем

set.seed(111) 
sample1 <- rnorm(n=10000,mean=356,sd=98) 
mean(sample1) #355.7724 

среднее будет действительно почти 356. Но если мы взяли усеченное нормальное распределение затем

set.seed(111) 
sample2<-rnormTrunc(n=100000,mean=356,sd=98,min=120 ,max=1260) 
mean(sample2) #357.9636 

среднее будет немного отличаться, около 358 но не 356. Причина, почему разница настолько мала, потому что, как видно на гистограмме

hist(rnorm(n=10000,mean=356,sd=98),breaks=100,xlim=c(0,1300)) 
abline(v=120,col="red") 
abline(v=1260,col="red") 

enter image description here

по усечения, вы берете очень нечастые значения (меньше, чем 120 и больше, чем 1260).

LogNormal - это толстокорочное распределение, перекошенное вправо. Это означает, что она включает в себя гораздо больше, чем нечастые значения нормального распределения, далеко за 1260. Если вы усечение распределение между 120 и 1260

hist(rlnormTrunc(10000,meanlog=356,sdlog=98,min=120,max=1260),breaks=100) 

вы получаете

set.seed(111) 
mean(rlnormTrunc(10000,meanlog=356,sdlog=98,min=120,max=1260)) #493.3903 

enter image description here

В каждом из приведенных выше примеров вы вычисляете среднее значение для случайного набора значений разных диапазонов из-за разных распределений, поэтому вы получаете разные средние значения.

Смежные вопросы