gamm
오류
012에 대해서
이것은 매우 흥미로운 것입니다. 글쎄, 먼저 논리를 설명해야합니다. (당신이 가우시안 데이터를 가지고) gamm
임의 효과로 매끄러운의 위글 구성 요소를 취급하기 때문에
원칙적 으로는, gamm
에서 스무딩 매개 변수를 수정하는 것은 불법이다,의 분산은 lme
추정된다. 평활화 매개 변수를 수정하려고하면 기본적으로 임의 효과의 분산을 수정한다고 말합니다. 음, lme
이 작업을 수행 할 수 없으며 이러한 시도가 혼합 모델링에서도 유효한지 의심 스럽습니다.)
따라서 gamm
포함 평활화 파라미터 가능한 제한을 해제 할 :
min.sp
통해 평활화 파라미터의 하한
- ;
- 부드러운 평행 공유 매개 변수는
id
을 통해 s()
;
sp
을 통해 s()
을 통해 직접 지정된 평활화 매개 변수.
처음 두 개가 완전히 검사됩니다. gamm
에는 gam
과 같은 min.sp
인수가 없습니다. ...
을 통해 지정하더라도 나중에 사용하게 될 가능성은 없습니다. (NULL
은 으로 gamm.setup
동안 전달되므로 지정된 min.sp
은 무시됩니다). id
의 사양은 이전에 본 오류 메시지에서도 감지되지만 물론 id
을 지정하지 않았으므로 위의 오류가 여기에 올바른 문제를보고하지 않으므로 버그가 발생합니다.
세 번째 것은 실제로 gamm
을 통해 직접 확인되지 않았습니다. 이상적으로는 gamm
/gam
수식을 해석 한 후 (interpret.gam
) 즉시 -1
으로 변경해야 -1
으로 재설정해야하며 이에 대한 경고 메시지를 발행해야합니다. 그러나이 부분이 없습니다. 따라서 현재로서는 최선의 방법은 sp
을 지정하지 않는 것입니다.
유효한 중첩 모델이 있습니까?
이제 중첩에 관심을 돌리십시오. 중첩은 평활화 매개 변수를 선택하는 대신 기본 설정과 관련됩니다. 동일한 기준 집합 (동일한 기초 유형, 동일한 수 및/또는 "매듭"의 위치)을 가지고있는 한 모델 행렬은 동일합니다. 예를 들어 모델 M0
및 M1
에서 s()
의 구성은 mgcv
이고 기본값은 bs = 'tp', k = 10
입니다. 따라서 s()
의 디자인 매트릭스는 두 모델에서 동일합니다. by = factor(gender)
은 s()
을 기본 모델 M0
의 모든 레벨 gender
에 복제합니다. 아마도 쉽게 볼 수 없지만 실제로 M1
은 M0
에 중첩되어 있습니다.
이것을 검증하는 간단한 예를 생각해 봅시다. 단순화를 위해 s(x)
을 mgcv
에서 사용하지 않지만 poly(x, degree = 2)
을 사용하십시오 (s(x)
이라고 상상해주세요). 의 처음 몇 가지 장난감 데이터를 생성하자 : f
이후
x <- 1:10
f <- gl(2, 5, labels = c("M", "F"))
는, 순서 요소가 아닙니다 s(x, by = factor(f))
는 f
의 모든 수준에 대한 s(x)
를 복제하여 설계 행렬을 생성
## original design matrix for `s(x)`
X0 <- poly(x, 2)
## design matrix for `f`, without contrasting
Xf <- model.matrix(~ f + 0)
## design matrix for level `M`
X1 <- X0 * Xf[, 1]
## design matrix for level `F`
X2 <- X0 * Xf[, 2]
## design matrix for `s(x, by = f)` "please, imagine it as `poly`"
X <- cbind(X1, X2)
# 1 2 1 2
# [1,] -0.49543369 0.52223297 0.00000000 0.00000000
# [2,] -0.38533732 0.17407766 0.00000000 0.00000000
# [3,] -0.27524094 -0.08703883 0.00000000 0.00000000
# [4,] -0.16514456 -0.26111648 0.00000000 0.00000000
# [5,] -0.05504819 -0.34815531 0.00000000 0.00000000
# [6,] 0.00000000 0.00000000 0.05504819 -0.34815531
# [7,] 0.00000000 0.00000000 0.16514456 -0.26111648
# [8,] 0.00000000 0.00000000 0.27524094 -0.08703883
# [9,] 0.00000000 0.00000000 0.38533732 0.17407766
#[10,] 0.00000000 0.00000000 0.49543369 0.52223297
두 번째 모델 M1
만있다 부드러운 용어 s(x)
, 디자인 행렬은 X0
입니다.여기
는 우리가 당신의 M1
이 M0
에 중첩되어 있음을 볼 수있는 방법입니다 : 따라서 s(x)
이 s(x, by = f)
에 중첩되어,
X1 + X2 = X0
, s(x)
의 디자인 매트릭스 s(x, by = f)
으로 동일한 열 범위를 가지고,
x
이 s(x)
에 중첩되어 있으므로 x:f
은 s(x, by = f)
에 중첩됩니다. 당신이 모델이 이미 잘 중첩 비록, 당신의 M1
와 비교 해석이없는 M0
주요 모델을 을 어떻게 할 것인지
. 귀하의 메인 모델 M0
은 각 레벨마다 독립적 인 부드러움으로 끝나고, M1
은 두 그룹 간의 차이에 초점을 맞 춥니 다.
M0
이 "참조 부드럽고 차이가 부드럽다"라는 형식을 제어 할 수 있다면 좋을 것입니다. 차이가 부드러워지면 실제로는 M1
을 맞추지 않고도 그룹간에 비선형 차이가 없다는 것을 알 수 있습니다.
mgcv
에서 요인을 주문한 경우 차이가 원활 해집니다. 그래서 난 당신이에 의해 메인 모델에 맞게 제안 : 추정 결과는 라인 원활 차이 s(x, by = gender1)
가 표시되면
gender1 <- ordered(gender) ## create an ordered factor
s(x) + s(x, by = gender1) + gender
, 당신은 당신이 대신도 F-test
를 사용하지 않고 간단한 모델
s(x) + gender:x + gender
에 맞게 수있어.
"차이"를 부드럽게 구성하려면 주문한 계수 by
을 갖는 것이 매우 중요합니다. 당신이 경우에
s(x) + s(x, by = gender) + gender ## note, it is "gender" in "by"
s(x)
및 s(x, by = gender)
완전히 선형 적으로 의존한다. 결과 모델 행렬은 등급 결함이됩니다.
일부 후속
내가 처음 AIC에 의해
s(x, by = as.factor(gender))
및
s(x) + s(x, by = gender)
으로 매개 변수화 같은 모델을 비교하여 나의 예에 포함 깜빡
(gender
0-1 수치 변수로 기억). 이러한 모델은 통계적으로는 동일하지만 경우에 따라 다듬기 매개 변수가 다르게 계산되므로 AIC가 약간 다릅니다.
아, 네. gender
은 이진이므로 by
숫자는 원활한 차이를 만드는 데 좋은 아이디어입니다. 그러나주의해서 이것을하십시오. 숫자 by
은 중심이 부드럽지 않습니다. 따라서 s(x) + s(x, by = gender)
은 암시 적으로 모델 절편과 혼동 된 절편 열을 갖습니다.s(x) + s(x, by = gender) - 1
으로 가야합니다.
sp는 gamm에서만 작동하지 않으며 gam에서만 작동합니까? – ErrantBard