2013-05-15 61 views
1

如果有任何包生成d高效的平衡設計有Rd高效平衡設計有R

我試過AlgDesign包,但我沒能得到一個平衡設計。

不確定這是因爲我正在考慮的屬性和級別的小全因子(32)還是因爲平衡設計超出了AlgDesign的範圍。

我有3個屬性:兩個屬性具有四個級別,和1具有2級

  • ATT 1:4水平
  • ATT 2:4級
  • ATT 3:2水平

我用下述R代碼:

library(AlgDesign) 
#----------------------------- 
# define attributes and levels 
#----------------------------- 
desVarNames <- c("esource", "certified", "cost") 
desLevels <- c(4,2, 4) 
n <- 6  #number of choice sets 
desOpt <- 4 #num option per choice set 

set.seed(123456) 
#generate full factorial 
dat<-gen.factorial(desLevels,length(desLevels),varNames=desVarNames, center=TRUE) 

destT <- optFederov(~., dat, nTrials = (n*(desOpt)), criterion="D") 
destT 

回答

0

首先,當你說「平衡」設計時,我懷疑你的意思是每個因素水平在最終設計中應該出現相同的次數。 (其實,上面的變量「dat」也是一個平衡設計,因爲每個可能的組合只出現一次)。

optFederov的工作方式是使用Federov的交換算法隨機選擇和替換試驗。因此,每次試驗與另一候選試驗進行交換時,初始平衡設計將失去平衡,因爲如果試驗「平衡」了設計,將其替換爲任何其他試驗將會使設計失衡。如果該算法在每一步都被迫保持平衡的設計,則不可能進行替換,並且會卡住。

不僅平衡設計與Feverov的交換算法的工作方式不兼容,實際上從D效率的角度來看並不理想。例如,如果您有4個因素分別具有2,3,5和7個等級,則具有平衡設計的唯一方法是包含所有2 * 3 * 5 * 7 = 210個試驗,而AlgDesign僅建議19.

data = gen.factorial(c(2,3,5,7), factors = "all") 
trials = optFederov(data = data, center = FALSE, criterion = "D") 

總而言之,「平衡d-效率」設計的概念在很大程度上是對立的。