Путаница с марковскими случайными полями в пакете 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)

Другие вопросы по тегам