我想使用ahpsurvey在R中执行层次分析。
我将使用下表作为我的数据集的一个例子。
| 地点|Var1|
| --------------|--------------|
| A|八|
| B|三|
| C|七|
| D|六|
| E|四个|
这是我想加入的Satty评级:
| 评级|解释|
| --------------|--------------|
| 九分之一|首选的特征绝对不那么重要|
| 1/7|优选的特征是非常不重要的|
| 五分之一|首选特征的重要性略低|
| 三分之一|首选的特征稍微不那么重要|
| 1|两个特点同样重要|
| 三|首选的特征稍微重要一些|
| 五|首选特征的重要性适中|
| 七|优选的特征强烈地更重要|
| 九|首选的特征绝对更重要|
第三步。这就是我被卡住的地方。我想创建一个循环来比较变量的值,使用上面的Satty排名进行评级。
num_alternatives <- length(location)
mat <- matrix(0, nrow = num_alternatives, ncol = num_alternatives)
colnames(comparison_matrix) <- location
rownames(comparison_matrix) <- location
#making comparisons between the value of Var1 of location A and the others
x_dta$a_diff <- 8 - x_dta$Var1
x_dta$a_diff <- as.character(x_dta$a_diff)
#assigned Satty ranking to the differences
diff_lookup <- c(`0` = 1, `5` = 7, `1` = 3, `2` = 5, `4` =7)
#location A comparison with other locations.
mat["A","B"] <- 7
mat["A","C"] <- 3
mat["A","D"] <- 5
mat["A","E"] <- 7
#followed the same process until I had a full matrix. The problem is that I have over 100 locations in my dataset and filling the matrix one by one is time consuming.
1条答案
按热度按时间3zwjbxry1#
生成100个位置名称
这很重要。现在你应该决定你的变量范围。Saaty的尺度只有9个值,因此位置的变量值的差异必须只有4个等级。您必须将差异聚合到9个类中,或将初始值聚合到4个类中。在你的例子中,我看到最小值是3,最大值是8。你没有5-s。但如果你有他们,你会得到可能的差异
-5、-4、-3、-2、-1、0、1、2、3、4、5
你不能把它聚合成9个类。因此,变量的范围只能是4(例如从3到7),而不是5(从3到8)。
生成100个随机值
制作模板矩阵
为Saaty的分数制作值的向量
你有少量的数据,那么为什么你忽略简单的循环?
填充矩阵的循环
您应该(为ahpsurvey软件包)列出每个决策者的一些矩阵(即使您只有一个决策者),因此: