Ваш оригинальный код вызывает функцию caFactorialDesign
дважды, в двух последовательных строках. Тем не менее, согласно conjoint
виньетка , caEncodedDesign
равна
, функция [которая] кодирует факторный план, полученный с помощью функции caFactorialDesign, для нужд совместного функционирования модуля
Исходя из этого, я полагаю, что одной из проблем является то, что ваш второй caFactorialDesign
звонок неверен. Возможно, вам следует вместо этого вызвать caEncodedDesign
, чтобы сгенерировать объект encdesign_full
. Поэтому попробуйте настроить свой код так:
# replace the line encdesign_full <- caFactorialDesign(facdesign_full) with
encdesign_full <- caEncodedDesign(facdesign_full)
Кроме того, здесь ваш код переписан более компактным и воспроизводимым способом:
# load library
library(conjoint)
# combinations of levels
data <- expand.grid(
alimentatie = c("mancare gatita","fast food","amandoua in mod alternativ"),
activitati = c("regulat","de cateva ori pe luna","foarte rar"),
bauturi = c("evit cat de mult pot","oricat de des simt nevoia","ocazional"),
odihna = c("7-8 ore","4-6 ore","mai mult de 8 ore"),
recreere = c("3-6","mai mult de 6","mai putin de 3"))
# profile
facdesign_full <- caFactorialDesign(data = data, type = "full")
profile <- caEncodedDesign(facdesign_full)
# level names
levelnames <- data.frame(
levels = c("mancare gatita","fast food","amandoua in mod alternativ",
"regulat","de cateva ori pe luna","foarte rar","evit cat de mult pot",
"oricat de des simt nevoia","ocazional", "7-8 ore","4-6 ore",
"mai mult de 8 ore","3-6","mai mult de 6","mai putin de 3")
)
# preferences
response <- structure(list(alimentatie = c(0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L,
0L, 0L, 2L, 0L, 2L, 0L, 1L, 2L, 0L, 2L, 0L, 2L, 0L, 0L, 2L, 0L,
2L, 0L, 0L, 0L, 2L, 2L, 2L, 0L, 0L, 0L, 0L, 2L, 0L, 2L, 0L, 0L,
2L, 2L, 0L, 0L, 2L, 0L, 2L, 2L, 0L, 2L, 2L, 1L, 0L, 2L, 0L, 2L,
2L, 0L, 1L), activitati = c(1L, 1L, 0L, 2L, 1L, 1L, 2L, 0L, 0L,
0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 2L, 2L, 0L, 0L, 1L, 1L, 2L, 1L,
2L, 0L, 0L, 2L, 1L, 1L, 0L, 0L, 1L, 0L, 2L, 1L, 2L, 2L, 1L, 1L,
2L, 2L, 0L, 2L, 0L, 1L, 2L, 0L, 2L, 2L, 2L, 0L, 2L, 1L, 1L, 1L,
2L, 2L), bauturi = c(2L, 0L, 0L, 2L, 0L, 2L, 1L, 0L, 0L, 2L,
1L, 1L, 0L, 0L, 1L, 2L, 2L, 2L, 0L, 2L, 0L, 0L, 2L, 2L, 1L, 2L,
0L, 0L, 0L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 0L, 1L, 2L, 1L, 0L, 1L,
2L, 0L, 1L, 0L, 2L, 2L, 1L, 1L, 2L, 1L, 0L, 2L, 2L, 1L, 1L, 0L,
2L), odihna = c(0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 2L, 0L, 1L, 2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L,
0L, 1L, 2L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 2L, 0L, 1L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 2L, 0L, 1L),
recreere = c(0L, 1L, 2L, 0L, 0L, 2L, 0L, 2L, 2L, 2L, 2L,
0L, 0L, 0L, 1L, 2L, 0L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 0L,
2L, 0L, 2L, 1L, 0L, 0L, 2L, 2L, 0L, 0L, 2L, 2L, 1L, 1L, 1L,
0L, 0L, 2L, 0L, 1L, 0L, 0L, 2L, 2L, 2L, 2L, 0L, 2L, 0L, 0L,
0L, 2L, 2L)), class = "data.frame", row.names = c(NA, -59L))
Обратите внимание на это, указав "полный" В проекте profile
объект имеет 243 строки, в то время как ваш объект response
имеет только 59:
dim(profile)
[1] 243 5
dim(response)
[1] 59 5
Кажется, что это сбивает с толку функцию Conjoint
, я полагаю, потому что она ищет 243 строки данные в объекте response
.
Фактически, если вы добавите 184 строки моделируемых данных к объекту response
, Conjoint
, похоже, даст желаемый результат:
# simulated response data
set.seed(1)
response_sim <- data.frame(alimentatie = sample(0:2, 184, replace = T),
activitati = sample(0:2, 184, replace = T),
bauturi = sample(0:2, 184, replace = T),
odihna = sample(0:2, 184, replace = T),
recreere = sample(0:2, 184, replace = T))
# append simulated preferences
response_n243 <- rbind(response, response_sim)
# run
Conjoint(response_n243,profile, levelnames)
![Console image](https://i.stack.imgur.com/LZe1K.png)
Заключение
Похоже, что ваша проблема связана с тем, что в вашем объекте response
меньше данных, чем требуется для выполнения "полного" факториального проектирования. Похоже, вам может потребоваться предоставить больше response
данных или пересмотреть свой дизайн, уделяя особое внимание аргументу type
caFactorialDesign
. «Дробный» дизайн может быть альтернативой.