簡體   English   中英

使用掃帚整理“火車”object

[英]Tidy a "train" object using broom

我通過使用插入符號 package 和下面的代碼進行了線性回歸 model

library(caret)
#Anscombe data is available on R
model_1<-train(
  form=y1~x1,
  data=anscombe,
  method='lm',
  trControl=trainControl(method='cv',number=3))

我想做的是使用broom::tidy(model_1)將 model 轉換為數據框,但它會引發錯誤

# Error: No tidy method for objects of class train

我認為問題出在插入符號 model 的 class 上,它是train()而不是lm() 有什么辦法可以整理train object? 或者我應該先將train object 轉換為lm

broom package目前不支持這種object,看這里: https://github.com/tidymodels/broom/issues/128

但是,您可以按照此處的說明輕松定義自己的tidy方法: https://www.tidymodels.org/learn/develop/broom/

這是一個最小的例子:

library(caret)
library(broom)

tidy.train <- function(x, ...) {
  s <- summary(x, ...)
  out <- data.frame(term=row.names(s$coefficients),
                    estimate=s$coefficients[, "Estimate"],
                    std.error=s$coefficients[, "Std. Error"],
                    statistic=s$coefficients[, "t value"],
                    p.value=s$coefficients[, "Pr(>|t|)"])
  row.names(out) <- NULL
  out
}

model_1<-train(
  form=y1~x1,
  data=anscombe,
  method='lm',
  trControl=trainControl(method='cv',number=3))

tidy(model_1)
#>          term  estimate std.error statistic     p.value
#> 1 (Intercept) 3.0000909 1.1247468  2.667348 0.025734051
#> 2          x1 0.5000909 0.1179055  4.241455 0.002169629

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM