Извлечь p-значение из gam.check в R - PullRequest
0 голосов
/ 20 ноября 2018

Когда я запускаю gam.check(my_spline_gam), я получаю следующий вывод.

Method: GCV   Optimizer: magic
Smoothing parameter selection converged after 9 iterations.
The RMS GCV score gradiant at convergence was 4.785628e-06 .
The Hessian was positive definite.
The estimated model rank was 25 (maximum possible: 25)
Model rank =  25 / 25 

Basis dimension (k) checking results. Low p-value (k-index<1) may
indicate that k is too low, especially if edf is close to k'.

         k'    edf k-index p-value
s(x) 24.000 22.098   0.849    0.06

Мой вопрос заключается в том, могу ли я извлечь это p-значение отдельно в таблицу.

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Использование capture.output в сочетании с небольшим манипулированием струнами -

gam_obj <- capture.output(gam.check(b,pch=19,cex=.3))
gam_tbl <- gam_obj[12:length(gam_obj)]
str_spl = function(x){
  p_value <- strsplit(x, " ")[[1]]
  output_p <- as.numeric(p_value[length(p_value)])
}
p_values <- data.frame(sapply(gam_tbl, str_spl))

выход

enter image description here

0 голосов
/ 20 ноября 2018

Похоже, вы не можете сохранить результат в объекте обычным способом.Вы можете использовать capture.output для сохранения вывода консоли в объекте, а затем впоследствии использовать str_split для получения правильного значения.Таким образом, для примера в файле справки это будет:

library(mgcv)
set.seed(0)
dat <- gamSim(1,n=200)
b <- gam(y~s(x0)+s(x1)+s(x2)+s(x3),data=dat)
r <- capture.output(gam.check(b))
p <- strsplit(r[12], " ")[[1]][11]

Но поскольку значение p является просто строкой, вы не получите точное значение p таким образом.

Edit: user20650 ответ даст вам правильный вывод:

r <- k.check(b)
r[,'p-value']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...