我们如何从欧防风对象中提取协方差矩阵?

How can we extract covariance matrix from a parsnip object?

我正在尝试使用 tidymodels 生态系统来执行计量经济学分析。我现在使用的示例来自 “R 计量经济学原理” 作者 Colonescu。书中资料可通过

下载
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 问题

创建模型后,我想检验不存在基于性别或种族的歧视的假设。换句话说,我需要检验 black、female 和 black:female 的系数在同一类型下都为零的假设。为此,我想使用汽车包中的 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 拟合对象。

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

reprex package (v2.0.1)

于 2021-11-13 创建