2011-04-27 6 views

답변

8

부트 스트래핑 방법을 사용합니다.
는 여기를 참조하십시오 : 시끄러운 가우스에 대한 http://phe.rockefeller.edu/LogletLab/whitepaper/node17.html

간단한 예 :

x = arange(-10, 10, 0.01) 

# model function 
def f(p): 
    mu, s = p 
    return exp(-(x-mu)**2/(2*s**2)) 

# create error function for dataset  
def fff(d): 
    def ff(p): 
     return d-f(p) 
    return ff 

# create noisy dataset from model 
def noisy_data(p): 
    return f(p)+normal(0,0.1,len(x)) 

# fit dataset to model with least squares  
def fit(d): 
    ff = fff(d) 
    p = leastsq(ff,[0,1])[0] 
    return p 

# bootstrap estimation   
def bootstrap(d): 
    p0 = fit(d) 
    residuals = f(p0)-d 
    s_residuals = std(residuals) 

    ps = [] 
    for i in range(1000): 
     new_d = d+normal(0,s_residuals,len(d)) 
     ps.append(fit(new_d)) 

    ps = array(ps) 
    mean_params = mean(ps,0) 
    std_params = std(ps,0) 

    return mean_params, std_params 

data = noisy_data([0.5, 2.1]) 
mean_params, std_params = bootstrap(data) 

print "95% confidence interval:" 
print "mu: ", mean_params[0], " +/- ", std_params[0]*1.95996 
print "sigma: ", mean_params[1], " +/- ", std_params[1]*1.95996 
+0

아주 좋은 답변입니다. 영어로 된 두 문장을 포함하면 부트 스트랩의 의미와 작동 원리를 설명하는 것이 크게 도움이 될 것입니다. –

4

난 당신이 신뢰 구간 무슨 뜻인지 모르겠습니다을.

일반적으로 leastsq은 최소화하려는 기능에 대해 잘 모르기 때문에 신뢰 구간을 제공 할 수 없습니다. 그러나 그것은 헤 시안의 추정치, 다시 말해 2 차 파생물의 다차원 문제에 대한 일반화를 반환합니다.

함수의 문서 문자열에서 암시 된 것처럼, 나머지 정보 (실제 솔루션과 실제 솔루션의 차이)와 함께 해당 정보를 사용하여 매개 변수 추정치의 공분산을 계산할 수 있습니다. 이것은 매개 변수 추정의 공분산입니다 간격.

지역 정보 일 뿐이며, 객관적인 기능이 철저히 철저한 경우에만 엄격한 결론을 내릴 수 있다고 생각합니다. 그 진술에 대한 어떠한 증거 나 언급이 없습니다 :).

2

신뢰 구간 (CI)을 추정하는 가장 간단한 방법은 표준 오차 (표준 편차)에 상수를 곱하는 것입니다. 상수를 계산하려면 자유도 (DOF)의 수와 CI를 계산할 신뢰도를 알아야합니다. 이런 식으로 추정 된 CI를 때로는 점근 적 CI라고합니다. Motulsky & Christopoulos (google books)의 "선형 및 비선형 회귀를 사용하여 생물학적 데이터에 모델 피팅"에서 더 자세히 읽을 수 있습니다. 같은 책 (또는 매우 유사한 책)은 무료로 as a manual for author's software에 있습니다.

how to calculate CI using the C++ Boost.Math library을 읽을 수도 있습니다. 이 예에서 CI는 하나의 변수의 분포에 대해 계산됩니다. 피팅이 최소 자승 인 경우 DOF는 N -1이 아니지만 N-M입니다. 여기서 M은 매개 변수의 수입니다. 파이썬에서도 똑같이해야한다.

이것은 가장 간단한 추정치입니다. 제퍼가 제안한 부트 스트래핑 방법을 모르지만, 필자가 작성한 방법보다 더 신뢰할 수 있습니다.