2012-09-10 1 views

답변

3

당신은 방정식을 가지고 있으므로, f(x) 정의에서 분명한 적분 항을 계산하려면 stats::integrate을 사용하십시오. 그런 다음 예 : plot(0:1000, f(0:1000),t='l').

+0

깔끔한! 나는 무한한 한계를 다룰 수있는 '통합'을 모른다. – Backlin

5

적분은 정규 분포의 누적 PDF이므로 (누락 된 정규화 계수 제외) pnorm으로 계산할 수 있습니다.

sf <- 1 
mf <- 0 
f <- function(x) 1/(2*sf^2*pi)*exp(-.5*((x-mf)/sf)^2) * 
       (1 - sf*sqrt(2*pi)*pnorm(x, mf, sf)) 
curve(f, from=-2, to=2) 

sf*sqrt(2*pi) 요소는 누락 된 정규화를 보완하기위한 것입니다. 나는 100 % 수학이 정확하다는 것을 확신하지 못하므로 직접 확인해보십시오.

편집 :Ben Bolker으로는 f의 첫 번째 부분을 지적은 코드를 읽기 쉽게 만들기, dnorm 단순화 할 수있다.

f <- function(x) dnorm(x, mf, sf)/(sqrt(2*pi)*sf) * 
       (1 - sf*sqrt(2*pi)*pnorm(x, mf, sf)) 

curve

+0

이것은 훌륭한 솔루션, 고마워요 :)하지만 어쨌든, 어떻게 이런 식으로 정수를 입력 할 수 있습니까? –

+0

여기에 "입력"하여 무엇을 의미하는지 모르겠습니다. 적분을 나타내거나 방정식을 R 코드로 변환 하시겠습니까? 방금 두 가지 작업을 했으므로 다른 기능이 있으면 위의 코드를 수정하면됩니다. 표준이 아닌 정수라면'Pnorm()'대신 @Carl이 제안한'integrate()'를 사용해야합니다. 또는 방정식을 플롯 영역에 그리시겠습니까? – Backlin

+1

첫 번째 요소에'dnorm'을 사용하여 약간 단순화 할 수 있다고 생각합니다. (정규화 요소도 조정해야하지만) –

관련 문제