比较逻辑模型时的方差分析函数没有偏差的 p 值
ANOVA function when comparing logistic models has no p-value for Deviance
我正在使用 R 中 MASS 库的活检数据集。我正处于创建逻辑回归模型的初始阶段,以查看哪些变量对恶性肿瘤的概率有影响。我删除了所有缺少数据的行(大约 16 个观察值)。所有变量本身都很重要,所以我从包含所有变量的最完整模型开始,第三个变量(V3 - 单元格大小的均匀性)在这个可能的最完整模型中是最不重要的。
我创建了另一个移除了 V3 的模型。然后我想使用 anova() 函数来查看两个模型的拟合是否存在显着差异。但是,我的方差分析检验没有得到 p 值。这是否意味着 p 值几乎为 1?我在模型设置中的某个地方犯了错误吗?
感谢所有意见!
#post removal of rows with missing data from biopsy in library(MASS)
relevel(biopsy$class, ref = "malignant")
#assigns value of interst to malignant instead of benign.
fullest.model = glm(biopsy$class~biopsy[,2]+biopsy[,3]+biopsy[,4]+biopsy[,5]+
biopsy[,6]+biopsy[,7]+biopsy[,8]+biopsy[,9]+biopsy[,10]
,family = binomial(link = "logit"))
model1 = glm(biopsy$class~biopsy[,2]+biopsy[,4]+biopsy[,5]+
biopsy[,6]+biopsy[,7]+biopsy[,8]+biopsy[,9]+biopsy[,10]
,family = binomial(link = "logit"))
anova(model1, fullest.model)
我得到的输出:
Resid. Df Resid. Dev Df Deviance
1 674 102.89
2 673 102.89 1 0.00090001
^看不到pvalue!!
我们生成一些样本数据,假设 GLM y = 0.5 * x1 + 4 * x2
。
# Generate some sample data
x1 <- 1:100;
x2 <- gl(2, 50, 100);
set.seed(2017);
y <- 0.5 * x1 + 4 * as.numeric(x2) + rnorm(100);
我们现在拟合两个模型:
fit1
估计模型 y = beta0 + beta1 * x1
、 的系数
fit2
估计模型的系数 y = beta0 + beta1 * x1 + beta2 * x2
。
# Fit two models
fit1 <- glm(y ~ x1 + x2);
fit2 <- glm(y ~ x1);
执行方差分析。
# Default ANOVA (note this does not perform any hypothesis test)
anova(fit1, fit2);
#Analysis of Deviance Table
#
#Model 1: y ~ x1 + x2
#Model 2: y ~ x1
# Resid. Df Resid. Dev Df Deviance
#1 97 112.11
#2 98 213.39 -1 -101.28
# ANOVA with likelihood ratio test
anova(fit1, fit2, test = "Chisq");
#Analysis of Deviance Table
#
#Model 1: y ~ x1 + x2
#Model 2: y ~ x1
# Resid. Df Resid. Dev Df Deviance Pr(>Chi)
#1 97 112.11
#2 98 213.39 -1 -101.28 < 2.2e-16 ***
#---
#Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
请注意,第一个方差分析比较不执行任何假设检验。它只是计算两个模型之间偏差的变化。第二个方差分析 anova(..., test = "Chisq")
执行似然比检验(与 anova(..., test = "LRT")
相同),通过计算观察 chi-squared 分布检验统计量(即 change in deviance) 极端或更极端。后一个数量对应于您的假设检验的 p-value。
最后看看this link。它提供了有关如何执行和解释方差分析输出的更多详细信息。
我正在使用 R 中 MASS 库的活检数据集。我正处于创建逻辑回归模型的初始阶段,以查看哪些变量对恶性肿瘤的概率有影响。我删除了所有缺少数据的行(大约 16 个观察值)。所有变量本身都很重要,所以我从包含所有变量的最完整模型开始,第三个变量(V3 - 单元格大小的均匀性)在这个可能的最完整模型中是最不重要的。
我创建了另一个移除了 V3 的模型。然后我想使用 anova() 函数来查看两个模型的拟合是否存在显着差异。但是,我的方差分析检验没有得到 p 值。这是否意味着 p 值几乎为 1?我在模型设置中的某个地方犯了错误吗?
感谢所有意见!
#post removal of rows with missing data from biopsy in library(MASS)
relevel(biopsy$class, ref = "malignant")
#assigns value of interst to malignant instead of benign.
fullest.model = glm(biopsy$class~biopsy[,2]+biopsy[,3]+biopsy[,4]+biopsy[,5]+
biopsy[,6]+biopsy[,7]+biopsy[,8]+biopsy[,9]+biopsy[,10]
,family = binomial(link = "logit"))
model1 = glm(biopsy$class~biopsy[,2]+biopsy[,4]+biopsy[,5]+
biopsy[,6]+biopsy[,7]+biopsy[,8]+biopsy[,9]+biopsy[,10]
,family = binomial(link = "logit"))
anova(model1, fullest.model)
我得到的输出:
Resid. Df Resid. Dev Df Deviance
1 674 102.89
2 673 102.89 1 0.00090001
^看不到pvalue!!
我们生成一些样本数据,假设 GLM
y = 0.5 * x1 + 4 * x2
。# Generate some sample data x1 <- 1:100; x2 <- gl(2, 50, 100); set.seed(2017); y <- 0.5 * x1 + 4 * as.numeric(x2) + rnorm(100);
我们现在拟合两个模型:
fit1
估计模型y = beta0 + beta1 * x1
、 的系数
fit2
估计模型的系数y = beta0 + beta1 * x1 + beta2 * x2
。
# Fit two models fit1 <- glm(y ~ x1 + x2); fit2 <- glm(y ~ x1);
执行方差分析。
# Default ANOVA (note this does not perform any hypothesis test) anova(fit1, fit2); #Analysis of Deviance Table # #Model 1: y ~ x1 + x2 #Model 2: y ~ x1 # Resid. Df Resid. Dev Df Deviance #1 97 112.11 #2 98 213.39 -1 -101.28 # ANOVA with likelihood ratio test anova(fit1, fit2, test = "Chisq"); #Analysis of Deviance Table # #Model 1: y ~ x1 + x2 #Model 2: y ~ x1 # Resid. Df Resid. Dev Df Deviance Pr(>Chi) #1 97 112.11 #2 98 213.39 -1 -101.28 < 2.2e-16 *** #--- #Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
请注意,第一个方差分析比较不执行任何假设检验。它只是计算两个模型之间偏差的变化。第二个方差分析
anova(..., test = "Chisq")
执行似然比检验(与anova(..., test = "LRT")
相同),通过计算观察 chi-squared 分布检验统计量(即 change in deviance) 极端或更极端。后一个数量对应于您的假设检验的 p-value。最后看看this link。它提供了有关如何执行和解释方差分析输出的更多详细信息。