我正在尝试使用tidymodels生态系统来执行经济计量分析。我现在学习的例子来自Colonescu的《R计量经济学原理》一书。书中的数据可以通过下载
devtools::install_github("ccolonescue/PoEData")
0.1示例
我正在创建一个工资歧视模型,它也具有互动效应。模型如下
library(tidymodels)
library(PoEdata)#to load the data
library(car)#For linearHypothesis function
装载所需的包裹:carData
lm_model <- linear_reg() %>%
set_engine("lm")#model specification
data("cps4_small")
mod1 <- lm_model %>%
fit(wage~educ+black*female, data=cps4_small)#model fitting
0.2问题
在创建了这个模型之后,我想检验一个假设,即不存在基于性别或种族的歧视。换句话说,我需要检验这样一个假设,即在同一类型下,黑人、女性和黑人的系数都为零。我想使用汽车软件包中的linearHypothesis
函数。
hyp <- c("black=0", "female=0", "black:female=0")
tab <- tidy(linearHypothesis(mod1, hyp))
这给了我一个错误there is no applicable method for vcov for an object of class _lm or model_fit
。
那么,有人能帮我如何从防风林对象生成协方差矩阵吗?
您需要使用extract_fit_engine()
从parsnip
模型对象中取出底层的lm
fit对象。
library(tidymodels)
library(PoEdata)
library(car)
data("cps4_small")
lm_model <- linear_reg() %>%
set_engine("lm")
mod1 <- lm_model %>%
fit(wage ~ educ + black * female, data = cps4_small)
hyp <- c("black=0", "female=0", "black:female=0")
mod1 %>%
extract_fit_engine() %>%
linearHypothesis(hyp) %>%
tidy()
#> # A tibble: 2 × 6
#> res.df rss df sumsq statistic p.value
#> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 998 135771. NA NA NA NA
#> 2 995 130195. 3 5576. 14.2 4.53e-9
创建于2021-11-13由reprex包(v2.0.1(