Путаница с марковскими случайными полями в пакете mgcv в R
Чтобы реализовать пространственный анализ, я попробовал простое марковское случайное сглаживающее поле в примере в пакете mgcv в R, где руководство находится здесь:
https://stat.ethz.ch/R-manual/R-devel/library/mgcv/html/smooth.construct.mrf.smooth.spec.html
Вот пример, который я попробовал:
library(mgcv)
data(columb) ## data frame
data(columb.polys) ## district shapes list
xt <- list(polys=columb.polys) ## neighbourhood structure info for MRF
b <- gam(crime ~ s(district,bs="mrf",xt=xt),data=columb,method="REML")
Однако, когда я взглянул на оценочные коэффициенты в коэффициентах b$, было получено 48 оценок из более гладкого марковского случайного поля:
> b$coefficients
(Intercept) s(district).1 s(district).2 s(district).3 s(district).4
35.12882390 -10.96490165 20.99250496 16.04968951 10.49535483
s(district).5 s(district).6 s(district).7 s(district).8 s(district).9
16.56626217 14.55352540 17.90043996 -0.60239588 13.41215603
s(district).10 s(district).11 s(district).12 s(district).13 s(district).14
18.61920671 -11.13853418 -2.95677338 7.89719220 3.04717540
s(district).15 s(district).16 s(district).17 s(district).18 s(district).19
-11.18235328 12.57473374 19.83013619 10.56130003 12.36240748
s(district).20 s(district).21 s(district).22 s(district).23 s(district).24
15.65160761 20.40965885 24.79853590 0.05312873 -14.65881026
s(district).25 s(district).26 s(district).27 s(district).28 s(district).29
-13.01294201 7.16191556 -9.36311304 3.65410713 -16.37092777
s(district).30 s(district).31 s(district).32 s(district).33 s(district).34
11.23500771 13.92036006 -14.67653893 -12.39341674 11.02216471
s(district).35 s(district).36 s(district).37 s(district).38 s(district).39
-12.93210046 -15.48924425 3.42745125 -2.54916472 -1.90604972
s(district).40 s(district).41 s(district).42 s(district).43 s(district).44
-16.25160966 -7.46491914 -4.48126353 -7.61064264 -2.91807488
s(district).45 s(district).46 s(district).47 s(district).48
-12.12765102 6.68446503 2.55883220 -0.20920888
Тем не менее, список округов показывает 49 областей (от 0 до 48). Когда я попробовал свои данные, произошла та же самая ситуация, потому что данные с 28 областями дали только 27 оценок из более гладкого марковского случайного поля.
Насколько я понимаю, марковское случайное поле, используемое в качестве пространственной функции, можно рассматривать как структурированный случайный эффект; однако сглаживающее марковское случайное поле в пакете mgcv в R, по-видимому, автоматически устанавливает первую область в качестве контрольного уровня. Мне интересно, является ли это просто фиксированным эффектом, но с учетом пространственной автокорреляции?
Если да, то как объяснить такой вывод? Я чувствую себя очень странно в том, что пространственная оценка может быть объяснена как разница между каждой областью и контрольной областью, но эта интерпретация не слишком значима.
Я думаю, сможем ли мы подобрать марковское случайное поле, более гладкое, как случайный эффект в R. Надеюсь, любой, кто знаком с этим пакетом, может дать некоторые предложения. Спасибо!
1 ответ
Коэффициенты в многомерном гауссовском сглаживании не являются и не должны интерпретироваться как коэффициенты, индивидуально применяемые к каждому ковариату s
является функцией. Они описывают корреляционные отношения между ковариатами; корреляция, описываемая количеством коэффициентов, которые должны быть установлены k
параметр в s
Функция R.
По умолчанию, s
наборы k
до максимума, n-1. k
не может быть больше, чем п-1 с п число ковариат в s
поскольку для установки среднего уровня необходим перехват, функция сглаживания будет изменяться, и общее количество установленных параметров не должно превышать размер "данных".
Для дальнейших деталей, проверьте параграф на choose.k
в файле справки mgcv.
Если вас интересует что-то, что непосредственно применимо к каждому из ваших округов, вы должны проверить значения, предсказанные функцией сглаживания. Следующий gamObject
помощь дается fitted.values
вещь.
Здесь я получаю:
> b$fitted.values
[1] 18.81758 22.12502 30.13315 33.14305 44.11208 30.17184 20.96227 39.77438
[9] 35.64875 32.88071 54.08242 49.13961 43.58527 49.65618 47.64344 50.99036
[17] 32.48752 46.50207 51.70913 21.95138 40.98711 36.13709 21.90757 45.66465
[25] 52.92006 43.65122 45.45233 48.74153 53.49958 57.88845 18.43111 20.07698
[33] 40.25183 23.72681 36.74403 16.71899 44.32493 47.01028 18.41338 20.69650
[41] 20.15782 17.60067 36.51737 30.54075 31.18387 16.83831 25.62500 28.60866
[49] 25.47928
Результат plot(b)
позволяет визуализировать подбор, он выглядит хорошо, и соответствие между наблюдаемым и оценочным кажется разумным: plot(columb$crime,b$fitted.values)