У меня есть следующий алгоритм для генерации значений для X и Y.
Шаг 1. Генерация U1, U2 ~ U (0,1)
Шаг 2. t = -бета * log (U1 * U2)
Шаг 3. Генерация U3 ~ U (0,1)
Шаг 4. X = t * U3, Y = t-X
Обратите внимание, что вы можете сравнить способ генерирования X и Y, генерируя U1 и U2 и определяя X = -beta * log (U1) и Y = -beta * log (U2)
Вот мой подход к реализации этого алгоритма в R:
f<-function(alpha,beta){ # alpha=2, beta=3 for example
N<-1000
t<-rep(0,N)
X<-rep(0,N)
Y<-rep(0,N)
for(j in 1:N)
{
u<-runif(alpha)
t[j]<- -beta*log(prod(u))
U3<-runif(1)
X[j]<-t[j]*U3
Y[j]<-t[j]-X[j]
}
c<-list(X,Y)
return(c)
}
alpha<-2
beta<-3
y1<-f(alpha,beta)
hist(y1,freq=F,nclass=10,col="gray")
#COMPARISON, defining x and y directly as -beta*ln(u):
u1<-runif(1)
u2<-runif(1)
betaa<-2
x<- -betaa*log(u1)
y<- -betaa*log(u2)
x
y
Код работает только в числовой части, генерирует 1000 значений для «X» и «Y». Там, где у меня проблемы, это часть histogram
, потому что она ничего не показывает, помечает ошибку
Hist (у1, частота = F, nclass = 10, Col = "серый")
Ошибка в hist.default (y1, freq = F, nclass = 10, col = "grey"):
«х» должен быть числовым
Я не понимаю, почему, как я могу это исправить?
Может кто-нибудь помочь, пожалуйста?