#r #probability
Вопрос:
Ниже приводится следующий p.d.f:
f(x)=2x/k^2, where 0 <= x <= k
Пусть k=10, я пытаюсь смоделировать 100 раз для этого p.d.f, затем вывести первые 5 результатов и найти среднее значение для всех результатов 100 раз.
Ответ №1:
Если вы хотите смоделировать с равномерным распределением между 0
и k
, то вы можете перейти runif(n, min, max)
в свой pdf-файл.
f <- function(x, k) {
return(2*x/k^2)
}
k <- 10
res <- f(runif(100, 0, k), k)
print(res[1:5])
print(mean(res))
Согласно комментариям MrFlick, если бы вы вместо этого хотели выполнить выборку обратного преобразования, этого должно быть достаточно.
pdf <- function(x, k) {
return(2*x/k^2)
}
cdf <- function(x, k){
return(x^2/k^2)
}
icdf <- function(y, k){
return(sqrt(k^2*y))
}
k <- 10
res <- icdf(runif(100,0,1), k)
print(res[1:5])
print(mean(res))
Комментарии:
1. Это кажется очень неправильным. Если
k=100
, то это распределение должно возвращать числа от 0 до 100. Но если вы перейдете в 0-1 дляx
intof
, вы никогда не получите число больше, чем2/100^2
. Я думаю, что вы пытались получить выборку с обратным преобразованием , но это включает в себя поиск обратного cdf , а не вставку случайных значений 0-1 в pdf.2. Мое понимание (если я правильно читаю вопрос) заключается в том , что если
k=100
, то, если вы интегрируетесьf(x)
0
k=100
, вы получите1
(как и в случае с любымk
действительным pdf-файлом). Таким образом, распределение должно принимать случайную выборку от 0-100, чтобы соответствовать диапазону 0-1.3. Но ваш код вообще не учитывает эту интеграцию. Это очень важный шаг. И именно поэтому CDF следует использовать с выборкой обратного преобразования.
4. Этот конкретный интеграл нетрудно решить вручную. Например
k=100
, ожидаемое значение (среднее значение) равно 66,6. Этот код дает гораздо, гораздо меньшее значение, чем ожидалось.5. По-видимому, это случай различных толкований вопроса без какого-либо предоставленного контекста. Я понял, что это означает простое создание однородной выборки из 0-k и ввод ее в pdf для получения вероятностей в качестве выходных данных, в то время как другой интерпретацией было бы создание однородной выборки из 0-1 и использование cdf для возврата числа из 0-k из базового распределения (как вы упомянули). После повторного чтения, вероятно, более вероятно, что пользователь просил позже. Я ценю ваши отзывы.