SpBayes для офсетной модели

Я использую spBayes, чтобы соответствовать модели со смещением y ~ 1.

У меня есть такой фрейм

    ID   lon   lat      y
1   A  90.0  5.9  0.957096100
2   A  90.5  6.0  0.991374969
3   A  91.1  6.0  0.991374969
4   A  92.7  6.1  0.913501740
5   A  94.0  6.1  0.896575928
6   A  97.8  5.2  0.631320953
7   A  98.9  4.4 -0.282432556
8   A 101.2  2.8  1.829053879
9   A 102.3  2.0  0.993621826
10  A 105.8  0.5  0.038677216

где идентификатор переменной является фактором с двумя уровнями A и B. Я хотел бы найти смещение для двух идентификаторов. Тем не менее, когда я бегу

fit.by.ALL <- spLM(formula=y ~ ID, data= df, coords=coords, 
               priors=priors, tuning=tuning, starting=starting,
               cov.model = "exponential", n.samples = n.samples, verbose = TRUE, 
               n.report = 50)

который дает результат

Iterations = 1:251
Thinning interval = 1 
Number of chains = 1 
Sample size per chain = 251 

1. Empirical mean and standard deviation for each variable,
   plus standard error of the mean:

               Mean     SD Naive SE Time-series SE
(Intercept)  1.0736 2.8674  0.18099        0.18099
IDB          -0.9188 0.1922  0.01213        0.01213

2. Quantiles for each variable:

              2.5%    25%     50%     75%   97.5%
(Intercept) -4.952 -0.773  1.1059  3.0165  6.4824
IDB         -1.303 -1.048 -0.9284 -0.7679 -0.5795

результат не нравится очень стабильный, так как он постоянно меняется каждый раз, когда я запускаю его.

Кроме того, чтобы найти окончательное смещение для идентификатора BI, необходимо добавить среднее значение (перехват) к среднему значению IDB, как это работает для SD?

Было бы лучше запустить формулу spLM отдельно для двух идентификаторов (с y ~ 1 вместо y~ID)?

Спасибо

1 ответ

Решение

Мне неясно, что вы имеете в виду под "подгонкой смещенной модели у ~ 1". Когда я читаю это, я думаю, что вам нужна модель, которая имеет только перехват, но, читая далее, она предлагает вам модель, в которой вы можете оценить среднее значение для обеих групп, что можно сделать, используя

y ~ 0+ID # manually remove the intercept,

Чтобы ответить на ваши вопросы:

результат не нравится очень стабильный, так как он постоянно меняется каждый раз, когда я запускаю его.

Вы не используете очень много итераций. Попробуйте запустить больше итераций. При достаточном количестве итераций результаты должны быть стабильными.

Кроме того, чтобы найти окончательное смещение для идентификатора BI, необходимо добавить среднее значение (перехват) к среднему значению IDB, как это работает для SD?

Опять же, я не уверен, что вы подразумеваете под смещением, но если вы имеете в виду, что вы хотите, чтобы разница в средних между группой A и группой B, это именно то, что вы имеете в строке, начинающейся с IDB. Таким образом, -0,9188 является оценочной разницей в средних значениях между группой B и группой A, т.е. среднее значение для группы B оценивается на 0,9188 меньше среднего значения для группы B, а SD - заднее стандартное отклонение.

Если вы заинтересованы в значении группы B, то вы правы, что вы должны добавить (Перехват) в IDB, но вы не можете просто добавить SD. У вас есть два варианта: 1) использовать соответствующую матрицу дизайна (X в вышеприведенном коде), который напрямую получает ваши оценки требуемых параметров или 2) получает выборки MCMC и вычисляет сумму параметров (Intercept) и ID B для каждой итерации, а затем принимает средние значения и стандартные отклонения этих сумм.

Было бы лучше запустить формулу spLM отдельно для двух идентификаторов (с y ~ 1 вместо y~ID)?

Если вы запускаете их отдельно, то вы будете оценивать пространственные параметры отдельно. Если пространственные параметры различны в двух разных группах, их использование по отдельности имеет большой смысл. Если они одинаковы (или похожи), то, вероятно, имеет смысл объединить две группы, чтобы вы могли "заимствовать" информацию о пространственных параметрах между этими двумя группами.

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