Я пытаюсь выполнить глобальный анализ чувствительности с использованием функции 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.
Какие-либо предложения? Я рад предоставить ссылку на данные