Я хочу стандартизировать переменные биологического набора данных.Мне нужно запустить glm, glm.nb и lm, используя разные переменные ответа.
Набор данных содержит подсчеты данного вида деревьев по графикам (все графики имеют одинаковый размер) и ряд качественных переменных:тип растительности, тип почвы и наличие / отсутствие крупного рогатого скота.
ДАННЫЕ
library(standardize)
library(AICcmodavg)
set.seed(1234)
# Short version of the dataset missing other response variables
dat <- data.frame(Plot_ID = 1:80,
Ct_tree = sample(x = 1:400, replace = T),
Veg = sample(x = c("Dry", "Wet", "Mixed"), size = 80, replace = T),
Soil = sample(x = c("Clay", "Sandy", "Rocky"), size = 80, replace = T),
Cattle = rep(x = c("Yes", "No"), each = 5))
ПРОБЛЕМА
Как и всеобъясняющие переменные являются категориальными, я не уверен, возможно ли создать стандартизированные модели lm со стандартизованными коэффициентами и стандартизированными стандартными ошибками.
Если я попытаюсь стандартизировать через базу R, используя scale () , Я получаю ошибку, потому что объясняющие переменные не являются числовыми.Я пытаюсь использовать стандартизированный пакет R, но я не уверен, что он делает то, что мне нужно.
МОДЕЛИ
m1 <- standardize(formula = Ct_tree ~ 1, data = dat, family = "gaussian", scale = 1)
# Error in standardize(formula = Ct_tree ~ 1, data = dat, family = "gaussian": no variables in formula
m2 <- standardize(formula = Ct_tree ~ Veg, data = dat, family = "gaussian", scale = 1)
m3 <- standardize(formula = Ct_tree ~ Soil, data = dat, family = "gaussian", scale = 1)
m4 <- standardize(formula = Ct_tree ~ Cattle, data = dat, family = "gaussian", scale = 1)
m5 <- standardize(formula = Ct_tree ~ Veg + Soil, data = dat, family = "gaussian", scale = 1)
m6 <- standardize(formula = Ct_tree ~ Veg + Cattle, data = dat, family = "gaussian", scale = 1)
m7 <- standardize(formula = Ct_tree ~ Soil + Cattle, data = dat, family = "gaussian", scale = 1)
m8 <- standardize(formula = Ct_tree ~ Veg + Soil + Cattle, data = dat, family = "gaussian", scale = 1)
# m1_st <- standardize(formula = m1$formula, data = m1$data)
m2_st <- lm(formula = m2$formula, data = m2$data)
# [...]
m8_st <- lm(formula = m8$formula, data = m8$data)
# Produce a summary table of AICs
models <- list(Veg = m2_st, Soil = m3_st, Cattle = m4_st, VegSoil = m5_st, VegCattle = m6_st, SoilCattle = m7_st, VegSoilCattle = m8_st)
aic_tbl <- aictab(models, second.ord = TRUE, sort = TRUE)
ВОПРОСЫ
1) Правильно ли я внедряю пакет стандартизации?
2) Выполняет ли мой код стандартизацию, которую я выполняю?
3) Когда я вызываю mi $ data , похоже, что переменная ответа (Ct_tree) была стандартизирована.Это то, что должно произойти?Я думал, что стандартизация произойдет с объясняющими переменными, а не с ответом.
4) Как я могу стандартизировать перехват (Ct_tree ~ 1)?Возможно, его не нужно стандартизировать, но мне все еще нужно его в итоговой таблице AIC для сравнения всех моделей.
5) У меня также есть другие переменные ответа, которые отсутствуют / присутствуют(перекодируется как 0 и 1 соответственно).Статистически правильно ли также стандартизировать эти столбцы, используя тот же процесс, что и выше?Пакет стандартизации создает столбец присутствия / отсутствия, идентичный оригиналу.Однако если я перемасштабирую такой столбец с помощью функции scale () из базы R, полученные числа будут положительными и отрицательными с десятичными знаками, и я не смогу применить биномиальное семейство.
6) Если я перекодирую качественные объясняющие переменные как порядковые (например, Почва = 0 для глины, 1 для песчаного, 2 для скалистых), а затем масштабирую их, будет ли это статистически корректно?