Если я правильно прочитал ваше намерение, вы пытаетесь подобрать нулевую модель без терминов?Если это так, то более простой способ - просто использовать SSB_sq ~ 1
в качестве формулы, то есть модель только с перехватом.
fit <- lm(sr ~ ., data = LifeCycleSavings)
fit0 <- lm(sr ~ 1, data = LifeCycleSavings)
## or via an update:
fit01 <- update(fit, . ~ 1)
Что дает, например:
> anova(fit)
Analysis of Variance Table
Response: sr
Df Sum Sq Mean Sq F value Pr(>F)
pop15 1 204.12 204.118 14.1157 0.0004922 ***
pop75 1 53.34 53.343 3.6889 0.0611255 .
dpi 1 12.40 12.401 0.8576 0.3593551
ddpi 1 63.05 63.054 4.3605 0.0424711 *
Residuals 45 650.71 14.460
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> anova(fit, fit0)
Analysis of Variance Table
Model 1: sr ~ pop15 + pop75 + dpi + ddpi
Model 2: sr ~ 1
Res.Df RSS Df Sum of Sq F Pr(>F)
1 45 650.71
2 49 983.63 -4 -332.92 5.7557 0.0007904 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Объяснение формул, которые я использую:
- Первая модель использовала ярлык
.
, что означает все остальные переменные в аргументе data
(в моей модели это означало все переменные в LifeCycleSavings
наRHS формулы, за исключением sr
, который уже находится в LHS). - Во второй модели (
fit0
) мы включаем 1
только в RHS формулы.В R 1
означает перехват, поэтому sr ~ 1
означает соответствие модели только для перехвата.По умолчанию используется перехват, следовательно, нам не нужно 1
при указании первой модели fit
. - Если вы хотите подавить перехват, добавьте
- 1
или + 0
в формулу.
Для ваших данных первой моделью будет:
full.model <- glm(SSB_sq ~ ., data = FOO, family = "poisson")
, где FOO
- это фрейм данных, содержащий ваши переменные - вы используете фрейм данных, не так ли?ты?Нулевая модель только для перехвата будет указана с использованием одного из:
null.model <- glm(SSB_sq ~ 1, data = FOO, family = "poisson")
или
null.model <- update(full.model, . ~ 1)