从0开始学习R语言--Day43--Wald检验

我们构建模型来研究问题时,我们一般习惯于在研究的末尾计算误差或者其他一些指标来判断模型的效果。但其实这样做我们忽略了一个隐形前提,即模型的构建或研究的公式是有意义的。

比如我们构建一个回归模型来研究学习时间是怎么影响成绩,自变量前的系数代表影响程度,而Wald检验,本质是就是在判断这个系数是不是真的不等于0,也就是学习时间是不是真的影响成绩,这能帮我们提前排查很多问题,如公式编排错误,变量没有标准化等一些准备工作或细节工作。

以下是用于一些模型中的Wald检验的例子:

R 复制代码
# 使用car包进行Wald检验
library(car)
# 使用aod包进行Wald检验

library(aod)

# 生成模拟数据集
set.seed(123)
n <- 100
x1 <- rnorm(n)
x2 <- rnorm(n)
y <- 2 + 1.5*x1 + 0.5*x2 + rnorm(n, sd = 0.5)
data <- data.frame(y, x1, x2)

# 拟合线性模型
model <- lm(y ~ x1 + x2, data = data)



# 检验x1的系数是否为0(单个参数检验)
linearHypothesis(model, "x1 = 0")

# 检验x1和x2的系数是否都为0(多个参数检验)
linearHypothesis(model, c("x1 = 0", "x2 = 0"))

# 查看模型摘要(包含Wald检验结果)
summary(model)

# 生成二分类数据
set.seed(123)
n <- 200
x1 <- rnorm(n)
x2 <- rnorm(n)
z <- 0.5 + 1.2*x1 - 0.8*x2
prob <- 1/(1+exp(-z))
y <- rbinom(n, 1, prob)
data_binary <- data.frame(y = as.factor(y), x1, x2)

# 拟合逻辑回归模型
glm_model <- glm(y ~ x1 + x2, family = binomial(), data = data_binary)

# 使用summary函数进行Wald检验
summary(glm_model)


wald.test(b = coef(glm_model), Sigma = vcov(glm_model), Terms = 2:3)


# 生成计数数据
set.seed(123)
n <- 150
x <- rnorm(n)
mu <- exp(1 + 0.5*x)
y <- rpois(n, mu)
data_count <- data.frame(y, x)

# 拟合泊松回归模型
poisson_model <- glm(y ~ x, family = poisson, data = data_count)

# 进行Wald检验
summary(poisson_model)

# 检验x的系数是否为0.5

wald.test(b = coef(poisson_model), Sigma = vcov(poisson_model), Terms = 2, H0 = 0.5)

输出:

R 复制代码
Call:
lm(formula = y ~ x1 + x2, data = data)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.93651 -0.33037 -0.06222  0.31068  1.03991 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  2.06753    0.04807   43.01   <2e-16 ***
x1           1.43341    0.05243   27.34   <2e-16 ***
x2           0.51191    0.04950   10.34   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.4756 on 97 degrees of freedom
Multiple R-squared:  0.8952,	Adjusted R-squared:  0.893 
F-statistic: 414.2 on 2 and 97 DF,  p-value: < 2.2e-16

Call:
glm(formula = y ~ x1 + x2, family = binomial(), data = data_binary)

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)   0.3473     0.1720   2.019   0.0435 *  
x1            1.1766     0.2188   5.377 7.57e-08 ***
x2           -1.0146     0.2010  -5.049 4.45e-07 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 274.83  on 199  degrees of freedom
Residual deviance: 206.58  on 197  degrees of freedom
AIC: 212.58

Number of Fisher Scoring iterations: 4

Call:
glm(formula = y ~ x, family = poisson, data = data_count)

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  0.98722    0.05245   18.82   <2e-16 ***
x            0.55921    0.04883   11.45   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 310.58  on 149  degrees of freedom
Residual deviance: 178.93  on 148  degrees of freedom
AIC: 568.19

Number of Fisher Scoring iterations: 5

输出中的p值都远小于0.001,但重要的是,这是个很好且工作量并不大的检查工作,而且这也可以体现出我们模型结果是否显著。

相关推荐
M78佐菲6 小时前
Linux学习笔记:TCP协议
linux·笔记·学习·tcp/ip·算法
yi.Ist7 小时前
数据定义语言-DDL操作
数据库·学习·mysql·oracle·大海豚
骐骥111 小时前
学习:javaScriptProxy和registerJavaScriptProxy有什么区别,能注册多少个对象
学习·鸿蒙
Huathy-雨落江南,浮生若梦11 小时前
Caddy 学习笔记 - 反向代理与 IP 封禁
笔记·学习·tcp/ip
m4Rk_13 小时前
【论文阅读】Agent 记忆机制(57):MemSearch-o1——从查询词元生长证据,重组 Deep Search 记忆路径
论文阅读·人工智能·学习·开源·github
闭月之泪舞13 小时前
C++编程学习
c++·学习
网安蟹佬霸14 小时前
2026网络安全每日学习计划:每天学多久?学什么?怎么安排?照着做就行!
网络·学习·安全·web安全·学习路线·网安
一条破秋裤14 小时前
TIM 输入捕获与 PWMI:从边沿到频率、占空比
笔记·stm32·学习
2601_9499506315 小时前
考研英语资料太散?用小程序把真题、词汇和错题放到一起
人工智能·学习·考研·小程序·刷题·小程序推荐
熊猫钓鱼>_>15 小时前
鸿蒙AI Agent新范式:从“对话式辅助”到“工程化代理”的Harness架构实战解析
人工智能·笔记·学习·华为·架构·harmonyos