R을 사용하여 데이터가 불확실한 선형 모델


9

불확실성이있는 데이터가 있다고 가정 해 봅시다. 예를 들면 다음과 같습니다.

X  Y
1  10±4
2  50±3
3  80±7
4  105±1
5  120±9

불확실성의 특성은 예를 들어 반복 측정 또는 실험 또는 계측기 불확실성 일 수 있습니다.

나는 일반적으로 내가 할 것 인 R을 사용하여 곡선을 맞추고 싶습니다 lm. 그러나 이것은 맞춤 계수의 불확실성과 결과적으로 예측 간격을 제공 할 때 데이터의 불확실성을 고려하지 않습니다. 문서를 보면 lm페이지에 다음이 있습니다.

가중치는 서로 다른 관측치에 다른 분산이 있음을 나타내는 데 사용할 수 있습니다.

그래서 이것은 아마도 이것과 관련이 있다고 생각하게 만듭니다. 나는 그것을 수동으로하는 이론을 알고 있지만 lm기능 으로 그렇게 할 수 있는지 궁금 합니다. 그렇지 않은 경우이를 수행 할 수있는 다른 기능 (또는 패키지)이 있습니까?

편집하다

일부 의견을 보면 여기에 몇 가지 설명이 있습니다. 이 예제를 보자 :

x <- 1:10
y <- c(131.4,227.1,245,331.2,386.9,464.9,476.3,512.2,510.8,532.9)
mod <- lm(y ~ x + I(x^2))
summary(mod)

나에게 준다 :

Residuals:
    Min      1Q  Median      3Q     Max 
-32.536  -8.022   0.087   7.666  26.358 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  39.8050    22.3210   1.783  0.11773    
x            92.0311     9.3222   9.872 2.33e-05 ***
I(x^2)       -4.2625     0.8259  -5.161  0.00131 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Residual standard error: 18.98 on 7 degrees of freedom
Multiple R-squared:  0.986, Adjusted R-squared:  0.982 
F-statistic: 246.7 on 2 and 7 DF,  p-value: 3.237e-07

기본적으로 내 계수는 a = 39.8 ± 22.3, b = 92.0 ± 9.3, c = -4.3 ± 0.8입니다. 이제 각 데이터 포인트에 대해 오류가 20이라고 말합니다. 호출에 사용 weights = rep(20,10)하고 lm대신에 이것을 얻습니다.

Residual standard error: 84.87 on 7 degrees of freedom

그러나 계수의 표준 오차는 변하지 않습니다.

수동으로, 나는 행렬 대수를 사용하여 공분산 행렬을 계산하고 거기에 가중치 / 오류를 넣고 그것을 사용하여 신뢰 구간을 도출하는 방법을 알고 있습니다. lm 함수 자체 또는 다른 함수에서 수행하는 방법이 있습니까?


데이터의 분포를 알고 있다면 bootR 의 패키지를 사용하여 부트 스트랩 할 수 있습니다 . 이후 부트 스트랩 된 데이터 세트에 대해 선형 회귀를 실행할 수 있습니다.
Ferdi

lm정규화 된 분산을 가중치로 사용하고 모수 불확실성을 추정하기 위해 모형이 통계적으로 유효하다고 가정합니다. 이것이 사실이 아니라고 생각하면 (오류 막대가 너무 작거나 너무 크다) 불확실성 추정값을 신뢰해서는 안됩니다.
Pascal

이 질문도 참조하십시오 : stats.stackexchange.com/questions/113987/…
jwimberley

답변:


14

이 유형의 모델은 실제로 "정상적인"선형 회귀보다 특정 과학 분야 (예 : 물리) 및 공학에서 훨씬 일반적입니다. 따라서와 같은 물리 도구 ROOT에서 이러한 유형의 맞춤을 수행하는 것은 사소한 반면 선형 회귀는 기본적으로 구현되지 않습니다! 물리학 자들은 이것을 단지 "맞춤"또는 카이 제곱 최소화 맞춤이라고 부르는 경향이 있습니다.

정규 선형 회귀 모형은 전체 분산이 있다고 가정합니다. σ모든 측정에 부착됩니다. 그런 다음 가능성을 극대화합니다

Lie12(yi(axi+b)σ)2
또는 동등하게 로그
log(L)=constant12σ2i(yi(axi+b))2
따라서 최소 제곱이라는 이름은 가능성을 최대화하는 것이 제곱의 합을 최소화하는 것과 같습니다. σ한 그와 같은 중요하지 않은 일정 하다 상수. 알려진 불확실성이 다른 측정을 사용하면 최대화 할 수 있습니다.
Le12(y(ax+b)σi)2
또는 동등하게 로그
로그()=영형에스12(와이나는(엑스나는+)σ나는)2
따라서 실제로는 역 분산으로 측정 값에 가중치를 부여하려고합니다. 1/σ나는2분산이 아닙니다. 더 정확한 측정은 불확실성이 적고 더 많은 무게를 주어야합니다. 이 가중치가 일정하면 여전히 합계에서 제외됩니다. 그래서, 그것은 추정 값에 영향을 미치지 않지만, 해야 의 이차 미분에서 가져온 표준 오차에 영향을 미칠로그().

그러나 여기서 우리는 물리 / 과학과 통계의 또 다른 차이점에 왔습니다. 일반적으로 통계에서는 두 변수 사이에 상관 관계가있을 것으로 예상하지만 거의 정확하지 않습니다. 반면 물리 및 기타 과학에서는 성가신 측정 오류가 아닌 경우에만 상관 관계 또는 관계가 정확할 것으로 예상합니다 (예 :에프=미디엄아니 에프=미디엄+ϵ). 당신의 문제는 물리 / 엔지니어링 사건에 더 많이 빠져있는 것 같습니다. 결과적으로, lm'측정 및 중량에 첨부 된 불확실성에 대한 해석은 원하는 것과 동일하지 않습니다. 그것은 무게를 취할 것이지만 여전히 전반적인 것이 있다고 생각합니다.σ2원치 않는 회귀 오차를 설명하기 위해 측정 오차가 유일한 종류의 오차가되기를 원합니다. ( lm의 해석 의 최종 결과 는 가중치의 상대적 값만 중요하기 때문에 테스트로 추가 한 상수 가중치가 효과가없는 이유입니다). 여기에있는 질문과 답변에 자세한 내용이 있습니다.

작품 무게와 표준 오차

거기에 대한 답변에는 몇 가지 가능한 해결책이 있습니다. 특히 익명의 답변은

vcov(mod)/summary(mod)$sigma^2

기본적으로 lm공분산 행렬의 추정값을 기반으로σ,이 작업을 취소하려고합니다. 그런 다음 수정 된 공분산 행렬에서 원하는 정보를 얻을 수 있습니다. 이것을 시도하지만 수동 선형 대수로 가능하다면 다시 확인하십시오. 그리고 가중치는 역 분산이어야합니다.

편집하다

당신이 이런 종류의 일을하는 경우를 많이 사용하면 사용하는 것이 좋습니다 ROOT(동안 기본적으로이 작업을 수행 보인다 lmglm하지 않습니다). 이 작업을 수행하는 방법에 대한 간단한 예는 다음과 같습니다 ROOT. 먼저, ROOTC ++ 또는 Python을 통해 사용할 수 있으며 대규모 다운로드 및 설치가 가능합니다. Jupiter 노트북을 사용하여 여기 링크 를 따라 오른쪽에서 "바인더"를 선택하고 왼쪽에서 "파이썬"을 선택 하여 브라우저에서 사용해 볼 수 있습니다 .

import ROOT
from array import array
import math
x = range(1,11)
xerrs = [0]*10
y = [131.4,227.1,245,331.2,386.9,464.9,476.3,512.2,510.8,532.9]
yerrs = [math.sqrt(i) for i in y]
graph = ROOT.TGraphErrors(len(x),array('d',x),array('d',y),array('d',xerrs),array('d',yerrs))
graph.Fit("pol2","S")
c = ROOT.TCanvas("test","test",800,600)
graph.Draw("AP")
c.Draw()

나는 불확실성에 제곱근을 넣었습니다 와이가치. 적합의 출력은

Welcome to JupyROOT 6.07/03

****************************************
Minimizer is Linear
Chi2                      =       8.2817
NDf                       =            7
p0                        =      46.6629   +/-   16.0838     
p1                        =       88.194   +/-   8.09565     
p2                        =     -3.91398   +/-   0.78028    

그리고 좋은 음모가 생성됩니다.

쿼드 핏

루트 피팅은 또한 불확실성을 처리 할 수 ​​있습니다. 엑스더 많은 해킹이 필요할 수 있습니다 lm. 누군가 R 에서이 작업을 수행하는 기본 방법을 알고 있다면 그것을 배우고 싶습니다.

두 번째 편집

@Wolfgang의 동일한 이전 질문에 대한 다른 대답은 더 나은 솔루션을 제공합니다 rma. metafor패키지 의 도구 (처음에는 그 답에서 텍스트를 해석하여 인터셉트를 계산하지 않았지만 그렇지 않습니다). 측정 값 y의 분산을 간단히 y로 계산 :

> rma(y~x+I(x^2),y,method="FE")

Fixed-Effects with Moderators Model (k = 10)

Test for Residual Heterogeneity: 
QE(df = 7) = 8.2817, p-val = 0.3084

Test of Moderators (coefficient(s) 2,3): 
QM(df = 2) = 659.4641, p-val < .0001

Model Results:

         estimate       se     zval    pval    ci.lb     ci.ub     
intrcpt   46.6629  16.0838   2.9012  0.0037  15.1393   78.1866   **
x         88.1940   8.0956  10.8940  <.0001  72.3268  104.0612  ***
I(x^2)    -3.9140   0.7803  -5.0161  <.0001  -5.4433   -2.3847  ***

---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

이것은 내가 찾은 이러한 유형의 회귀에 가장 적합한 순수한 R 도구입니다.


나는 스케일링을 취소하는 것이 기본적으로 잘못이라고 생각합니다 lm. 이렇게하면 카이 제곱과 같은 유효성 검사 통계가 해제됩니다. 잔차 분산이 오차 막대와 일치하지 않으면 통계 모델에 문제가있는 것입니다 (모델 선택 또는 오차 막대 또는 정규 가설 ...). 두 경우 모두 매개 변수 불확실성은 신뢰할 수 없습니다 !!!
Pascal

@PascalPERNOT 나는 이것에 대해하지 않았습니다. 나는 당신의 의견에 대해 생각할 것입니다. 솔직히 말해서, 나는 가장 좋은 해결책은 lm올바른 결과를 얻기 위해 해킹 하는 대신이 문제를 올바르게 해결하도록 보장 된 물리 또는 엔지니어링 소프트웨어를 사용하는 것이 일반적이라는 점에 동의합니다 . (호기심 많은 사람이있는 경우에이 작업을 수행하는 방법을 보여 드리겠습니다 ROOT.)
jwimberley

1
문제에 대한 통계학 자의 접근 방식의 한 가지 잠재적 이점은 여러 수준의 관측치간에 분산 추정값을 풀링 할 수 있다는 것입니다. 근본 분산이 일정하거나 포아송 공정에서와 같이 측정과 정의 된 관계가있는 경우 분석은 일반적으로 각 데이터 포인트에 대해 측정 된 분산이 정확하고 부당하게 가중치가 부여된다는 가정 (일반적으로 비현실적)에 비해 개선됩니다. 일부 데이터 포인트. OP의 데이터에서 상수 분산 가정이 더 좋을 것이라고 생각합니다.
EdM

1
@jwimberley 나는 그것을 가정 σ모수 공분산 행렬을 계산하기 전에 가중 잔차 표준 오차가 1로 다시 조정되도록합니다. 이 방법으로 체중을 곱하여 확인할 수 있습니다σ2"잔류 표준 오류"출력이 어떻게 영향을 받는지 확인하십시오. 귀하의 예에서는 1.088에서 1로 변경됩니다. 설정이 통계적으로 유효한 경우, 스케일링은 파라미터 불확실성에 미미한 영향을 미칩니다 ...
Pascal

1
물리 과학을위한 B. (2015) 베이지안 방법 인 Andreon, S. and Weaver, B. (8 장) 8 장에서 이러한 문제들에 대해 잘 논의하고있다. 봄 병아리. springer.com/us/book/9783319152868
Tony Ladson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.