Как создать полный факторный дизайн и набор выбора, если каждый атрибут имеет разное количество уровней?
Я Валентина, и я впервые пишу здесь и заранее извиняюсь за свой английский.
Я использую программное обеспечение R. Я должен создать эксперимент выбора.
Я знаю, что для определения максимального количества используемых комбинаций: (Уровень)^ Фактор. В целом атрибуты имеют одинаковое количество уровней. Например, если есть 3 атрибута и каждый имеет 2 уровня, общее количество комбинаций будет равно: 3^2=9.
У меня есть 4 атрибута с разным количеством уровней:
Attribute A: 100%, 75%, 50%, 25%;
Attribute B: yes, no;
Attribute C: yes, no;
Attribute D: 5, 10, 15, 20.
в зависимости есть опция статус-кво.
Как я могу определить максимальное количество комбинаций? А после я создам дробный дизайн.
Я пытался таким образом, но я не уверен, что это правильно:
> library(DoE.base)
> oa.design(nlevels=c(4,2,2,4))
Я попытался также создать экспериментальный дизайн следующим образом:
> d.object <- rotation.design(
attribute.names = list(A= c("100%", "75%", "50%", "25%"), B=c ("yes", "no"), C=c("yes" , "no"), D = c("5", "10", "15", "20")),
nalternatives = 2, nblocks = 1, row.renames = FALSE, randomize = TRUE,
seed = 987)
>status.quo <- c(A= "0", B= "no", C= "no", D= "0")
>questionnaire(choice.experiment.design = d.object, common = status.quo)
и я получаю анкету.
Правильна ли эта процедура в случае атрибутов с разным количеством уровней?
1 ответ
Количество комбинаций будет являться произведением количества уровней каждой переменной:
Attribute_A = c('100%', '75%', '50%', '25%')
Attribute_B = c('yes', 'no')
Attribute_C = c('yes', 'no')
Attribute_D = c(5, 10, 15, 20)
N = prod(length(Attribute_A), length(Attribute_B), length(Attribute_C), length(Attribute_D))
# [1] 64
Вы можете генерировать комбинации, используя expand.grid
combinations = expand.grid(Attribute_A = Attribute_A,
Attribute_B = Attribute_B,
Attribute_C = Attribute_C,
Attribute_D = Attribute_D,
stringsAsFactors = FALSE)
head(combinations)
# Attribute_A Attribute_B Attribute_C Attribute_D
# 1 100% yes yes 5
# 2 75% yes yes 5
# 3 50% yes yes 5
# 4 25% yes yes 5
# 5 100% no yes 5
# 6 75% no yes 5
#...
Ты можешь использовать rbind
добавить параметр "status_quo" (обычно называется "control" на английском языке)
status_quo = c(Attribute_A= "0", Attribute_B= "no", Attribute_C= "no", Attribute_D= "0")
combinations = rbind(status_quo, combinations)
head(combinations)
# Attribute_A Attribute_B Attribute_C Attribute_D
# 1 0 no no 0
# 2 100% yes yes 5
# 3 75% yes yes 5
# 4 50% yes yes 5
# 5 25% yes yes 5
# 6 100% no yes 5