R: получить p-значение для всех коэффициентов в множественной линейной регрессии (включая контрольный уровень)

Пример

У меня есть линейная регрессия, которая соответствует числовой зависимой переменной с 3 независимыми факторными переменными. Каждая из факторных переменных имеет 2 уровня.

install.packages("robustbase")
install.packages("MASS")
require(robustbase)
require(MASS)

# Example data
data(npk)
df= npk[,-1]
str(df) 

# 'data.frame':  24 obs. of  4 variables:
# $ N    : Factor w/ 2 levels "0","1": 1 2 1 2 2 2 1 1 1 2 ...
# $ P    : Factor w/ 2 levels "0","1": 2 2 1 1 1 2 1 2 2 2 ...
# $ K    : Factor w/ 2 levels "0","1": 2 1 1 2 1 2 2 1 1 2 ...
# $ yield: num  49.5 62.8 46.8 57 59.8 58.5 55.5 56 62.8 55.8 ...

set.seed(0)
model <- lmrob(yield ~ N + P + K - 1, data= df)

Задача

Я хочу получить доступ к p-значениям для каждого коэффициента объекта model. Чтобы избежать ненужного перехвата, я уже использую - 1 в формуле.

summary(model)$coefficients

# Estimate Std. Error    t value     Pr(>|t|)
# N0 54.644672   2.400075 22.7678995 8.972084e-16
# N1 60.166737   1.966661 30.5933467 2.858276e-18
# P1 -1.059299   2.139443 -0.4951286 6.259053e-01
# K1 -3.905052   2.226012 -1.7542822 9.469295e-02

Похоже, что базовые (контрольные) уровни для P и K скрыты.

Вопрос

Как я могу изменить код для доступа к p-значениям также для P0 и K0 в качестве коэффициентов для объекта model?

Примечание. Я не уверен, имеет ли это значение для решения, которое я действительно использую в своей реальной проблеме lmrob в качестве надежной функции регрессии, поэтому я решил сохранить ее в этом воспроизводимом примере.


person user2030503    schedule 13.04.2014    source источник
comment
Значения p предназначены для разницы между значением фактора и эталонным значением. При использовании терапевтических контрастов, используемых по умолчанию для R, исходный уровень факторного коэффициента является первым уровнем. Intercept - это оценочный уровень для гипотетического случая, когда все значения факторов находятся на своих базовых уровнях. Следовательно, эту оценку вряд ли можно назвать ненужной.   -  person IRTFM    schedule 13.04.2014


Ответы (1)


Оцениваемые p-значения:

coef(summary(model))[, 4]

Что касается контрольных уровней, модель использует контрасты лечения, поэтому все значения контрольных уровней равны нулю, поэтому не имеет смысла запрашивать их p-значения.

person G. Grothendieck    schedule 13.04.2014
comment
OK. Работает. Но он не показывает лучшие переменные на основе p-значения (например, *, **, **). Есть другой способ сделать это? - person mah65; 03.06.2020