Использование fast99 () для факторной переменной в пакете чувствительности R? - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь выполнить глобальный анализ чувствительности с использованием функции fast99() в пакете sensitivity в R.

У меня есть усредненная по модели стандартизированная модель логистики c, построенная с использованием * Функция 1005 * в пакете MuMIn:

full.clean = glm(obs ~ season + seasdate + mean_canopy + mid_con + tree_type +
             tree_size + ass_trans_direct + slope + mid_snow +
             mid_cloud + tree_density + meanBA + totBA, 
           data=sight_dat2_scaled, family=binomial(logit), na.action="na.fail")

#get top models with AICc <2
top.models <- get.models(x1, subset=delta<2)
#model average covariate effects
ave <- model.avg(top.models)
#pull model-averaged formula
mod <- glm(ave$formula,  data=sight_dat2_scaled, family=binomial(logit))

#run fast99 on model-averaged dredge model:
fastcat <- fast99(model = mod, factors = c("mean_canopy", "mid_cloud", "mid_con", 
              "mid_snow", "seasdate", "slope", "totBA", "tree_density", "tree_size"), n = 500,
               q = "qunif",
               q.arg = c(min = -2, max = 2))

Я получаю сообщение об ошибке:

    Error: variable 'tree_size' was fitted with type "factor" but type "numeric" was supplied
In addition: Warning messages:
1: In if (class(x$model) == "function") { :
  the condition has length > 1 and only the first element will be used
2: In model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) :
  variable 'tree_size' is not a factor

Глядя на код функции, опубликованный в Интернете, я думаю, что функция fast99 () преобразует символ или факторные переменные:

if (is.character(factors)) {
    X.labels <- factors
    p <- length(X.labels)
  } else {
    p <- factors
    X.labels <- paste("X", 1 : p, sep = "")

Поэтому я пытаюсь использовать "tree_size" как фактор:

fastcat <- fast99(model = mod, factors = c("mean_canopy", "mid_cloud", "mid_con", 
              "mid_snow", "seasdate", "slope", "totBA", "tree_density", **as.factor**("tree_size")), n = 500,
               q = "qunif",
               q.arg = c(min = -2, max = 2))

И мне выдается ошибка:

Error in eval(predvars, data, env) : object 'tree_size' not found
In addition: Warning message:
In if (class(x$model) == "function") { :
  the condition has length > 1 and only the first element will be used

У кого-нибудь есть понимание того, как указать '' 'fast99 ()' '' для факторной переменной? Я думаю, что это может быть связано с аргументами q= и q.arg=, но я не уверен, как их изменить. Прямо сейчас я использую q = "qunif" и q.arg = c(min = -2, max = 2) для всех переменных, потому что 8 или 9 являются цифрами c и стандартизированы, так что это единое пространство параметров охватывает большую часть входного пространства для всех переменных чисел c.

Какие-либо предложения? Я рад предоставить ссылку на данные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...