私は大規模な 2 項データセットを使用して、国家間の関係をグラフ化しています。国家間の「外交距離」を示す R を使用してプロットを作成することが私の目標です: 彼らは友人ですか? 各観測はイベントであり、3 つの変数 (Actor1、Actor2、および 4 段階スケールでのそれらのアクションの性質) が、私が知る必要があることを教えてくれます。(4 段階評価の簡単な説明: 1 は友好的、2 は非常に友好的、3 は敵対的、4 は非常に敵対的です。) 私のデータは次のようになります。
# Replicate data
C <- c("AFG", "AFR", "AGO", "AIA", "ALB", "ARE", "ARG", "ARM",
"ASA", "ATG", "AUS", "AUT", "AZE", "BDI", "BEL", "BEN", "BFA",
"BGD", "BGR", "BHR", "BHS", "BLR", "BLZ", "BMU", "BOL", "BRA",
"BRB", "BRN", "BTN", "BWA", "CAF", "CAN", "CAS", "CHE", "CHL",
"CHN", "CIV", "CMR", "COD", "COG", "COK", "COL", "COM", "CPV",
"CRI", "CUB", "CYM", "CYP", "CZE", "DEU", "DJI", "DMA", "DNK",
"DOM", "DZA", "EAF", "ECU", "EGY", "ERI", "ESP", "EST", "ETH",
"EUR", "FIN", "FJI", "FRA", "FSM", "GAB", "GBR", "GEO", "GHA",
"GIN", "GMB", "GNB", "GNQ", "GRC", "GRD", "GTM", "GUY", "HND",
"HRV", "HTI", "HUN", "IDN", "IND", "IRL", "IRN", "IRQ", "ISL",
"ISR", "ITA", "JAM", "JOR", "JPN", "KAZ", "KEN", "KGZ", "KHM",
"KIR", "KNA", "KOR", "KWT", "LAM", "LAO", "LBN", "LBR", "LBY",
"LCA", "LIE", "LKA", "LSO", "LTU", "LUX", "LVA", "MAC", "MAR",
"MCO", "MDA", "MDG", "MDV", "MEA", "MEX", "MHL", "MKD", "MLI",
"MLT", "MMR", "MNG", "MOZ", "MRT", "MUS", "MWI", "MYS", "NAM",
"NER", "NGA", "NIC", "NLD", "NMR", "NOR", "NPL", "NRU", "NZL",
"OMN", "PAK", "PAN", "PER", "PGS", "PHL", "PLW", "PNG", "POL",
"PRK", "PRT", "PRY", "PSE", "QAT", "ROM", "RUS", "RWA", "SAF",
"SAS", "SAU", "SDN", "SEA", "SEN", "SGP", "SLB", "SLE", "SLV",
"SMR", "SOM", "SRB", "STP", "SUR", "SVK", "SWE", "SWZ", "SYC",
"SYR", "TCD", "TGO", "THA", "TJK", "TKM", "TMP", "TON", "TTO",
"TUN", "TUR", "TUV", "TZA", "UGA", "UKR", "URY", "USA", "UZB",
"VAT", "VCT", "VEN", "VNM", "VUT", "WAF", "WSM", "WST", "YEM",
"ZAF", "ZMB", "ZWE")
ActionClasses <- c(1,2,3,4)
data = data.frame(Actor1=sample(C, size = 1000, replace = TRUE), Actor2=sample(C, size = 1000, replace = TRUE), Action = sample(ActionClasses, size = 1000, replace = T))
まず、次のコードを使用して関係をグラフ化する必要があります。
Interactions <- function(d) {
y <- Month[(Month$Actor1CountryCode == d),]
lapply(C, function(b) {
z <- y[(y$Actor2CountryCode == b),]
a <-sapply(1:4, function(Y) {
sum(z$QuadClass == Y)})
a <- rbind(a)
row.names(a) <- paste(d,"v",b, sep = "")
colnames(a) <- c("VerbCoop", "MatCoop", "VerbConf", "MatConf")
q <<- rbind(q,a)
})
}
注: このコードは重複を許可します。これは後で修正します。
ただし、プロットにどのようにアプローチする必要があるかはわかりません。私は、良好な関係 ('VerbCoop' と 'MatCoop' で非常に高いスコア) を持つ国が互いに近くなり、悪い関係を持つ国が互いに遠く離れることを望んでいます。これにより、互いに好きな国のグループが互いに分離されたクラスターのようなマップが作成されます。これにどのようにアプローチすればよいですか?