Непоследовательные оценки от предсказания - PullRequest
1 голос
/ 03 июня 2019

Недавно я слышал о пакете Foretmeans в R, поэтому я хотел проверить его. Итак, я попробовал этот тестовый набор данных и модель:

data = data.frame(
    blk = LETTERS[rep(1:2, each = 4)],
    trt = letters[rep(1:4, each = 2)],
    x = c(3.3, 3.3, 1.8, 1.8, 1.5, 1.5, 5.4, 5.4),
    y = c(5.9, 5.8, 6.5, 6.7, 4.6, 4.5, 3.8, 3.8))
mod1 = lm(y ~ x + blk + trt, data = data)

Вот оценки trt средних с использованием predictmeans::predictmeans (выходные данные строго сокращены, чтобы показать только оценки):

library("predictmeans")
predictmeans(mod1, "trt")

## $`Predicted Means`
## trt
##      a      b      c      d 
## 5.0846 5.5462 5.0846 5.0846 

Кажется любопытным, что три из четырех средств равны. Даже странно, что я получаю разные результаты, если выражаю модель по-разному:

mod2 = lm(y ~ blk + trt + x, data = data)
predictmeans(mod2, "trt")

## $`Predicted Means`
## trt
##     a     b     c     d 
## 4.825 5.575 5.575 4.825

Здесь у нас все еще есть два разных средства, но картина другая. И это меняется с другой моделью:

mod3 = lm(y ~ trt + blk + x, data = data)
predictmeans(mod3, "trt")

## $`Predicted Means`
## trt
##    a    b    c    d 
## 5.85 6.60 4.55 3.80 

Теперь есть четыре разных способа!

Эффект от установки ковариаты x также отличается. Если мы не укажем это, predictmeans будет использовать x = 3; если я попытаюсь x = 0, я получу:

predictmeans(mod1, "trt", covariate = c(x = 0))

## $`Predicted Means`
## trt
##      a      b      c      d 
## 5.6615 6.1231 5.6615 5.6615

predictmeans(mod2, "trt", covariate = c(x = 0))

## $`Predicted Means`
## trt
##     a     b     c     d 
## 4.825 5.575 5.575 4.825

Я обнаружил, что указание другого значения x изменяет результаты для mod1, но результаты идентичны для mod2 независимо от x (это верно и для mod3).

Что происходит, что дает такие дико противоречивые результаты? Есть ли лекарство от этого?

...