Скажем, я хочу оценить с lm()
средние значения y
по k группам, где группы определяются фактором.
Если я просто наберу lm(y ~ factor)
, это даст мне перехват и коэффициент для коэффициентов k-1, но выраженный как отличие от перехвата. Вместо этого я хочу иметь прямые значения средств.
Есть ли способ сделать это чисто с contrast
в lm()
? Я не уверен, как этот контраст будет называться ... ортогональным? Я могу, очевидно, удалить перехват: lm(y ~ -1+ factor)
, но это даст мне неверные значения R2
reg1 <- lm(Sepal.Length~ Species, data= iris)
reg2 <- lm(Sepal.Length~ -1 + Species, data= iris)
## get coefs
coef(reg1) # not what I want
#> (Intercept) Speciesversicolor Speciesvirginica
#> 5.006 0.930 1.582
coef(reg2) # whay I want
#> Speciessetosa Speciesversicolor Speciesvirginica
#> 5.006 5.936 6.588
## THe models are equivalent:
all.equal(fitted(reg1), fitted(reg2))
#> [1] TRUE
# but the -1 trick will create problems for some stats, such as R2
summary(reg1)$r.squared
#> [1] 0.6187057
summary(reg2)$r.squared
#> [1] 0.9925426
Создано в 2019-05-01 пакетом представ. (v0.2.1)