r-我们如何从防风林对象中提取协方差矩阵



我正在尝试使用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模型对象中取出底层的lmfit对象。

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(

相关内容

  • 没有找到相关文章

最新更新