2013-02-25 4 views
6

R 패키지 spatstat (현재 버전 1.31-0)을 사용하는 경우 use.gam 옵션이 있습니다. 이것을 true로 설정하면 R 패키지 mgcv과 같은 방식으로 선형 예측기에 부드러운 용어를 포함 할 수 있습니다. 내가 절편에 대한 신뢰 구간을 원하는 경우 예를 들어, 지금 R 패키지 "spatstat": use.gam = TRUE 일 때 포아송 프로세스 모델 (함수 : ppm)에서 비 매끄러운 용어에 대한 표준 오류를 어떻게 얻습니까?

g <- ppm(nztrees, ~1+s(x,y), use.gam=TRUE) 

는, 당신은 일반적으로 당신이 gam를 사용하지 않을 때 작동하지만 실패하는 summary 또는 vcov을 사용할 수 있습니다 당신은 할머니

vcov(g) 
을 사용 할 때

Error in model.frame.default(formula = fmla, data = 
    list(.mpl.W = c(7.09716796875, :invalid type (list) for variable 's(x, y)' 

내가 알고 오류 메시지를 제공

여기에이 표준 오류 근사 정당화 어 아니라고 당신이 gam를 사용하지만이이 경고 메시지에 포착되는 도중 : - 나는 내가 그들을 사용하고 목적으로이 표준 오차의 사용을 정당화 할 준비가 오전

In addition: Warning message: model was fitted by gam(); 
      asymptotic variance calculation ignores this 

나는 이것에 대해 걱정하지 않아요 - 나는 그 숫자를 원하고 그렇게하기 위해 "writing-my-own"을 피하고 싶습니다.

위의 오류 메시지가 내가 사용하는 데이터 세트에 의존하지 않는 것 같습니다. spatstat이 사전로드되어 있으므로 여기에 nztrees 예제를 사용했습니다. 변수 자체에 대해 불평하는 것 같지만 모델은 모델에 적합하므로 구문을 분명히 이해합니다 (그리고 예측 된 값은 내 데이터 집합에 대해 상당히 잘 보이므로 가비지를 펌핑하는 것이 아닙니다).

아무도 이것에 대한 조언이나 통찰력을 갖고 있지 않습니까? 이거 버그 야? 놀랍게도, 나는이 온라인 토론을 찾을 수 없었습니다. 도움이나 힌트를 주시면 감사하겠습니다.

편집 : 나는 확실히 여기에 내 자신의 질문에 대답 한 있지만, 나는 당분간 내 대답을 수락하지 않습니다. 그렇게하면 누군가 다음 버전 인 spatstat을 기다리지 않고 "해결 방법"을 찾는데 관심을 갖고 기꺼이 참여할 수 있다면 그 사람에게 현상금을 수여 할 수 있습니다. 그렇지 않으면 현상금 기한이 끝나고 나만의 대답을 받아 들일 것입니다.

+0

화면에 g를 인쇄하려고하면 같은 오류 메시지가 나타납니다. model.frame 함수를 호출 할 때 문제가 발생하는 것 같습니다. 간단한 디버깅으로 에러가 라인 데이터 <- .Internal (model.frame (formula, rownames, variables, varnames, extras, extranames, subset, na.action))에서 발생하는 것 같습니다. –

+0

안녕하세요 @Hemmo, 나는 그것을 볼 수 있습니다. 그러나 모델은 여전히 ​​계산됩니다 (예 : coef (g)). 예상 값을 플로팅 할 수 있습니다. (예를 들어 표준 오류를 얻으려고하면이 오류가 발생합니다.) 어떤 팁? – Macro

+0

ppm과 mpl.engine의 코드를 살펴보면 ppm과 그 하위 함수는 model.frame 접근 방식을 사용하지 않는다고 말할 수 있습니다. 수식과 데이터를 출력 (g $ internal)에 저장하지만 기본 수식 파싱 /model.frame.default는 목록 s (x, y)를 처리 할 수 ​​없습니다. 데이터 프레임에 그러한 것이 없기 때문입니다. 내 짐작은 이것이 버그라는 것이고 패키지 작성자에게이 질문을해야한다. 또한 이전 버전의 패키지로 이것을 테스트하여 동일한 오류가 발생하는지 확인할 수 있습니다. –

답변

4

패키지 저자 인 Adrian Baddeley에게 연락했습니다.그는 신속히 대응하여 이것이 실제로 소프트웨어의 버그라는 것을 알려주고, 분명히 나는 ​​그것을 처음 만나는 사람입니다. 다행히도 문제를 추적하여 해결하는 데는 시간이 걸렸습니다. 이 수정본은 spatstat의 다음 릴리스 (1.31-1)에 포함될 예정입니다.

편집 :spatstat의 업데이트 된 버전이 출시되어 더 이상이 버그를 가지고 있지 않습니다

g <- ppm(nztrees, ~1+s(x,y), use.gam=TRUE) 
sqrt(vcov(g)[1,1]) 
[1] 0.1150982 
Warning message: 
model was fitted by gam(); asymptotic variance calculation ignores this 

다른 릴리스 노트에 대한 the spatstat website를 참조하십시오. 이 스레드를 읽고 참여한 모든 사람들에게 감사드립니다!

1

트렌드를 어떻게 지정할 수 있는지 확신 할 수 없습니다. 그 원인은 아마도 오류의 원인 일 수 있습니다. 확인하지 않는 것 의미 according to the documentation :

The default formula, ~1, indicates the model is stationary and no trend is to be fitted.

하지만 그 대신 당신이 그렇게 같은 모델을 지정할 수 있습니다

g <- ppm(nztrees, ~x+y, use.gam=TRUE) 
#Then to extract the coefficientss: 
>coef(g) 
(Intercept)    x    y 
-5.0346019490 0.0013582470 -0.0006416421 
#And calculate their se: 
vc <- vcov(g) 
se <- sqrt(diag(vc)) 
> se 
(Intercept)   x   y 
0.264854030 0.002244702 0.003609366 

합니까이 메이크업 감각/예상 된 결과를? 패키지 작성자가 과거에 나를 도와 주었기 때문에 메일을 보냈을 때 r-sig-geo 메일 링리스트에서 매우 적극적임을 알고 있습니다. 해당 메일 링리스트에 질문을 올리려는 경우도 있지만 여기에 질문을 참조하십시오.

+0

안녕하세요 @ 사이먼, 귀하의 관심을 가져 주셔서 감사합니다. 's (x, y)'는'x, y'의 효과를 (예상되는) 비모수적인 부드러운 함수로 지정하기위한'gam' 문법입니다. [gam 설명서] (http://127.0.0.1:31246/library/mgcv/html/gam.html)를 참조하십시오. 모델 *은 내 코드를 실행할 때 함수 매개 변수로 추정됩니다 (예 : 예측 표면을 플롯 (plot (predict (g))). 그러나 SE와 관련하여'gam'과의 링크가 불완전한 것으로 보입니다. 비 매끄러운 용어는 사용할 수 없습니다. 당신이 맞춘 모델은 보통 'x'와'y'에서 로그 선형입니다. 그리고 나는 그 표준 오류 등을 얻는 데 성공했습니다. – Macro

+0

@Macro 나는 더 많은 관심을 기울여야했습니다. 내가 도울 수 있는지 더 자세히 살펴보고 r-sig-geo에 게시하는 것이 강력하게 권장되며 [게시 가이드] (http://www.r-project.org/)를 읽어 보시기 바랍니다. posting-guide.html)을 먼저 읽으십시오. 나는 이전에 메일 링리스트에 대한 질문을 잘못 작성했었다. –

+0

이 정보를 따르는 다른 사용자의 경우 로컬이 아닌 [gam 설명서] (http://finzi.psych.upenn.edu/R/library/mgcv/html/gam.html) –