當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R broom augment.coxph 使用來自 (n) 個 coxph 對象的信息增強數據


Augment 接受模型對象和數據集,並添加有關數據集中每個觀察值的信息。最常見的是,這包括 .fitted 列中的預測值、.resid 列中的殘差以及 .se.fit 列中擬合值的標準誤差。新列始終以 . 前綴開頭,以避免覆蓋原始數據集中的列。

用戶可以通過 data 參數或 newdata 參數傳遞數據以進行增強。如果用戶將數據傳遞給 data 參數,則它必須正是用於擬合模型對象的數據。將數據集傳遞給 newdata 以擴充模型擬合期間未使用的數據。這仍然要求至少存在用於擬合模型的所有預測變量列。如果用於擬合模型的原始結果變量未包含在 newdata 中,則輸出中不會包含 .resid 列。

根據是否給出 datanewdata,增強的行為通常會有所不同。這是因為通常存在與訓練觀察(例如影響或相關)測量相關的信息,而這些信息對於新觀察沒有有意義的定義。

為了方便起見,許多增強方法提供默認的 data 參數,以便 augment(fit) 將返回增強的訓練數據。在這些情況下,augment 嘗試根據模型對象重建原始數據,並取得了不同程度的成功。

增強數據集始終以 tibble::tibble 形式返回,其行數與傳遞的數據集相同。這意味著傳遞的數據必須可強製轉換為 tibble。如果預測變量將模型作為協變量矩陣的一部分輸入,例如當模型公式使用 splines::ns()stats::poly()survival::Surv() 時,它會表示為矩陣列。

我們正在定義適合各種 na.action 參數的模型的行為,但目前不保證數據丟失時的行為。

用法

# S3 method for coxph
augment(
  x,
  data = model.frame(x),
  newdata = NULL,
  type.predict = "lp",
  type.residuals = "martingale",
  ...
)

參數

x

survival::coxph() 返回的 coxph 對象。

data

base::data.frametibble::tibble() 包含用於生成對象 x 的原始數據。默認為stats::model.frame(x),以便augment(my_fit) 返回增強的原始數據。不要將新數據傳遞給 data 參數。增強將報告傳遞給 data 參數的數據的影響和烹飪距離等信息。這些度量僅針對原始訓練數據定義。

newdata

base::data.frame()tibble::tibble() 包含用於創建 x 的所有原始預測變量。默認為 NULL ,表示沒有任何內容傳遞給 newdata 。如果指定了newdata,則data 參數將被忽略。

type.predict

指示要使用的預測類型的字符。傳遞給 stats::predict() 泛型的 type 參數。允許的參數因模型類而異,因此請務必閱讀predict.my_class 文檔。

type.residuals

指示要使用的殘差類型的字符。傳遞給 stats::residuals() 泛型的 type 參數。允許的參數因模型類而異,因此請務必閱讀residuals.my_class 文檔。

...

附加參數。不曾用過。僅需要匹配通用簽名。注意:拚寫錯誤的參數將被吸收到 ... 中,並被忽略。如果拚寫錯誤的參數有默認值,則將使用默認值。例如,如果您傳遞 conf.lvel = 0.9 ,所有計算將使用 conf.level = 0.95 進行。這裏有兩個異常:

  • tidy() 方法在提供 exponentiate 參數時會發出警告(如果該參數將被忽略)。

  • augment() 方法在提供 newdata 參數時會發出警告(如果該參數將被忽略)。

細節

當使用 na.action = "na.omit" 執行建模時(這是典型的默認設置),初始數據中帶有 NA 的行將完全從增強 DataFrame 中省略。當使用 na.action = "na.exclude" 執行建模時,應提供原始數據作為第二個參數,此時增強數據將包含這些行(通常用 NA 代替新列)。如果未向 augment()na.action = "na.exclude" 提供原始數據,則會引發警告並刪除不完整的行。

帶有列的 tibble::tibble()

.fitted

擬合值或預測值。

.resid

觀察值和擬合值之間的差異。

.se.fit

擬合值的標準誤差。

例子


# load libraries for models and data
library(survival)

# fit model
cfit <- coxph(Surv(time, status) ~ age + sex, lung)

# summarize model fit with tidiers
tidy(cfit)
#> # A tibble: 2 × 5
#>   term  estimate std.error statistic p.value
#>   <chr>    <dbl>     <dbl>     <dbl>   <dbl>
#> 1 age     0.0170   0.00922      1.85 0.0646 
#> 2 sex    -0.513    0.167       -3.06 0.00218
tidy(cfit, exponentiate = TRUE)
#> # A tibble: 2 × 5
#>   term  estimate std.error statistic p.value
#>   <chr>    <dbl>     <dbl>     <dbl>   <dbl>
#> 1 age      1.02    0.00922      1.85 0.0646 
#> 2 sex      0.599   0.167       -3.06 0.00218

lp <- augment(cfit, lung)
risks <- augment(cfit, lung, type.predict = "risk")
expected <- augment(cfit, lung, type.predict = "expected")

glance(cfit)
#> # A tibble: 1 × 18
#>       n nevent statistic.log p.value.log statistic.sc p.value.sc
#>   <int>  <dbl>         <dbl>       <dbl>        <dbl>      <dbl>
#> 1   228    165          14.1    0.000857         13.7    0.00105
#> # ℹ 12 more variables: statistic.wald <dbl>, p.value.wald <dbl>,
#> #   statistic.robust <dbl>, p.value.robust <dbl>, r.squared <dbl>,
#> #   r.squared.max <dbl>, concordance <dbl>, std.error.concordance <dbl>,
#> #   logLik <dbl>, AIC <dbl>, BIC <dbl>, nobs <int>

# also works on clogit models
resp <- levels(logan$occupation)
n <- nrow(logan)
indx <- rep(1:n, length(resp))
logan2 <- data.frame(
  logan[indx, ],
  id = indx,
  tocc = factor(rep(resp, each = n))
)

logan2$case <- (logan2$occupation == logan2$tocc)

cl <- clogit(case ~ tocc + tocc:education + strata(id), logan2)

tidy(cl)
#> # A tibble: 9 × 5
#>   term                       estimate std.error statistic   p.value
#>   <chr>                         <dbl>     <dbl>     <dbl>     <dbl>
#> 1 toccfarm                     -1.90     1.38       -1.37  1.70e- 1
#> 2 toccoperatives                1.17     0.566       2.06  3.91e- 2
#> 3 toccprofessional             -8.10     0.699     -11.6   4.45e-31
#> 4 toccsales                    -5.03     0.770      -6.53  6.54e-11
#> 5 tocccraftsmen:education      -0.332    0.0569     -5.84  5.13e- 9
#> 6 toccfarm:education           -0.370    0.116      -3.18  1.47e- 3
#> 7 toccoperatives:education     -0.422    0.0584     -7.23  4.98e-13
#> 8 toccprofessional:education    0.278    0.0510      5.45  4.94e- 8
#> 9 toccsales:education          NA        0          NA    NA       
glance(cl)
#> # A tibble: 1 × 18
#>       n nevent statistic.log p.value.log statistic.sc p.value.sc
#>   <int>  <dbl>         <dbl>       <dbl>        <dbl>      <dbl>
#> 1  4190    838          666.   1.90e-138         682.  5.01e-142
#> # ℹ 12 more variables: statistic.wald <dbl>, p.value.wald <dbl>,
#> #   statistic.robust <dbl>, p.value.robust <dbl>, r.squared <dbl>,
#> #   r.squared.max <dbl>, concordance <dbl>, std.error.concordance <dbl>,
#> #   logLik <dbl>, AIC <dbl>, BIC <dbl>, nobs <int>

library(ggplot2)

ggplot(lp, aes(age, .fitted, color = sex)) +
  geom_point()


ggplot(risks, aes(age, .fitted, color = sex)) +
  geom_point()


ggplot(expected, aes(time, .fitted, color = sex)) +
  geom_point()

相關用法


注:本文由純淨天空篩選整理自大神的英文原創作品 Augment data with information from a(n) coxph object。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。