【问题标题】:How can we extract covariance matrix from a parsnip object?我们如何从欧洲防风草对象中提取协方差矩阵?
【发布时间】:2021-11-13 12:23:11
【问题描述】:

我正在尝试使用 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 问题

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

那么,有人可以帮我如何从欧洲防风草对象生成协方差矩阵吗?

【问题讨论】:

    标签: r tidymodels r-parsnip


    【解决方案1】:

    您需要使用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 日创建

    【讨论】:

    • 感谢您的支持,@EmilHvitfeldt。这很有帮助。我用过你的包“调色板”。也感谢您的包裹。
    猜你喜欢
    • 2020-09-24
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多