2013-10-18 5 views
1

밀도 함수가있는 경우 크기 n = 2914의 임의 변수를 어떻게 생성 할 수 있습니까? 밀도 함수에서 임의 변수 생성

그래서 문제는 내가 (잘 정의 된 기능) 밀도 F (x)를 내가 반대로 몬테 카를로를 사용하는, 내가 어떻게 해야할지 모르겠어요 필요가 있다고 생각

P  <- function(a,e) { ((1/6)(1^3))-((a/2)(1^2)) +(((((a)^2)/2)+e)*1)} 
D  <- function(u,mu,sigma) {dlogis(u,mu,sigma)} 
K  <- function(u,a,e) {(((1/2)*(u^2))- (a*u) +(((a^2)/2)+e))} 
H  <- function(u,mu,sigma){ plogis(u,mu,sigma, lower.tail = TRUE)} 
Fprim <- function(u,a,e,mu,sigma) (1/P(a,e))(D(u,mu,sigma))(K(H(u,mu,sigma),a,e)) 

Fprim(1,a,e,mu,sigma) 

df <- function(u) Fprim(u,a,e,mu,sigma) 

# Parameter n,a,e,mu,sigma 
n<-2914; mu<- -0.42155226; sigma<- 0.60665552; a<- 0.43218138; e<- 0.02149706 

을 가지고있다?

+0

당신이 당신의 첫 번째 질문으로 무엇을 의미하는지 확실하지. 'n = 2914'크기의 샘플을 어떻게 생성 할 수 있습니까? – pjs

+1

'P' 기능은 무엇을해야할까요? 왜 1의 힘을 얻는거야? – pjs

+0

내 밀도 함수 df에서 변수를 생성하는 방법을 설명합니다. 다른 함수 P, D, K 및 H는 df = Fprim의 표현식을 단순화하는 데 사용되는 함수이며, 1의 제곱 수는 아니지만 곱셈 bu 1입니다. 정말 중요하지 않은 함수 안에 있습니다. – Lea

답변

3

무력은 항상있다 ...

> cdf<-function(x) integrate(df,-20,x)$value 
> qdf<-function(x) optimize(function(z)(cdf(z)-x)^2,c(-20,20))$minimum 
> rdf<-function(n) sapply(runif(n),qdf) 
> x<-rdf(2000) 
> hist(x,freq=F) 
> xseq<-seq(-8,8,len=1000) 
> lines(xseq,sapply(xseq,df)) 

enter image description here

+0

답변 해 주셔서 감사합니다. 좋겠지 만 라인 최적화에 대한 질문이 있습니다. – Lea

0

주어진 분포에서 데이터를 생성하는 데는 여러 가지 옵션이 있습니다.

역 누적 분포를 갖는 가장 간단한 방법은 (위의 것 중 어느 것이 될 수 있는지는 알 수 없습니다.) 균일 분포에서 $ n $ 관측치를 생성하고 그 값을 CDF의 역함과 연결하는 것입니다 .

다른 몇 가지는 Rejection SamplingMetropols-Hastings 샘플링을 포함합니다. 해당 페이지의 링크를 사용하면 충분하지 않은 경우 다른 페이지를 찾을 수 있습니다.

+0

나는 누적 분포를 역으로 변환 한 다음 균일 분포를 사용하여 변수를 생성하는 것을 이해합니다. 그러나 나는 r에별로 좋지 않습니다. 이것이 코드를 요구하는 것입니까, 내 밀도 함수는 df 또는 Fprim입니다. – Lea