2012-09-09 4 views
1

I는 이항 분포와 정규 분포 사이의 제곱의 합을 계산하고 p내가 배열

의 함수로서 데이터를 표시 R의 함수 쓰고 위에 기능을 실행할 때 INF 값을 얻고 유지 여기서 I는이 무엇인가

먼저 I는 (N = 100)

random_binom<-rbinom(100,100,p)

다음에, I는 어떤 임의의 요소 equa을 갖는 가능성을 찾을 확률 P와 난수 이항 분포를 생성 값 NP (평균)와 정규 분포

d_norm<-dnorm(random_binom,p*100,sqrt(100*p*(1-p)))

그리고 분포의 랜덤 값이 상기 값보다 작거나 가질 것으로 그 확률에 따라 sqrt(np(1-p))의 표준 편차보다 L 이하 이항 분포

d_binom<-dbinom(random_binom,100,p)

마침내 나는 두 가지를 빼 광장을하고 반환에 따라 평균의. return(result)

result<-sum((d_norm-d_binom)^2) 지금 콘솔 내에서, 나는 모든이를위한 기능을 생성 :

하여 myFunction :

function(p){ 
random_binom<-rbinom(100,100,p) 
d_norm<-dnorm(random_binom,p*100,sqrt(100*p*(1-p))) 
d_binom<-dbinom(random_binom,100,p) 
result<-sum((d_norm-d_binom)^2) 
return(result) 
} 

나는, P 곳 p<-(c(0:99)/100)에 대한 벡터를 전달하고 싶지만 그럴 때마다 함수는 다음을 반환합니다.

inf

값 벡터가 아닌. 어떻게하면 벡터에 값의 벡터를 반환하여 그래프를 그릴 수 있습니까? 나는 lapply 사용하여 시도했지만 그 이상한 형식으로 데이터를 반환 :

[[95]] 
[1] 0.01064091 

[[96]] 
[1] 0.01418807 

[[97]] 
[1] 0.02647295 

[[98]] 
[1] 0.05065813 

[[99]] 
[1] 0.1179141 

[[100]] 
[1] 0.7342808 

각 요소는 그래프가 매우 어려워 다른 요소를 포함 의미한다.

답변

3

문제는 p가 0 일 때, 함수가 효율적으로이 작업을 수행 할 것입니다 :

dnorm(0, 0, 0) 
[1] Inf 

은 어쩌면 당신은 p<-(c(1:99)/100) 줄까?


lapplylist 반환합니다. unlist을 사용하여 배열로 변환 할 수 있습니다. Llapply 호출 결과를 할당한다고 가정 해보십시오. 그러면 이것을 할 수 있습니다

unlist(L) 
+0

'unlist'를 사용하는 대신'lapply' 대신'sapply'를 사용할 수 있습니다. –

관련 문제