Имитация данных о вхождении в R

Я пытаюсь создать набор данных о совместном вхождении, где представляющая интерес переменная является программным приложением, и я хочу смоделировать матрицу n на n, где в каждой ячейке есть число, указывающее, сколько раз приложение A использовалось с приложением Б. Как я могу создать набор данных в R, который я могу использовать для тестирования набора алгоритмов кластеризации и разделения. Какую модель я буду использовать и как я буду генерировать данные в R?

2 ответа

n    <- 10
apps <- LETTERS[1:n]
data <- matrix(0,n,n)
rownames(data) <- apps
colnames(data) <- apps

# create artificial clusters
data[1:3,1:5] <- matrix(sample(3:5,15,replace=T),3,5)
data[6:9,4:8] <- matrix(sample(1:3,20,replace=T),4,5)

# clustering
hc <- hclust(dist(data))
plot(hc)
rect.hclust(hc, k=2)

Примечание. Этот ответ был отредактирован с учетом того факта, что матрица совместного вхождения должна быть симметричной.

set.seed(42)
# software names:
software <- c("a","b","c","d")
# times each software used:
times.each.sw <- c(5,10,12,3)

# co-occurrence data.frame
swdf <- setNames(data.frame(t(combn(software,2))),c("sw1","sw2"))
swdf$freq.cooc <- apply(combn(times.each.sw,2),2,function(x) sample(1:min(x),1) )
#  sw1 sw2 freq.cooc
#1   a   b         5
#2   a   c         5
#3   a   d         1
#4   b   c         9
#5   b   d         2
#6   c   d         2

Если вы предпочитаете матрицу совместного использования, то что-то вроде этого может быть:

mat <- diag(times.each.sw) 
dimnames(mat) <- list(software,software)
mat[lower.tri(mat)] <- swdf$freq.cooc
mat[upper.tri(mat)] <- t(mat)[upper.tri(mat)]

#  a  b  c d
#a 5  5  5 1
#b 5 10  9 2
#c 5  9 12 2
#d 1  2  2 3

Диагональ содержит количество раз, когда каждое программное обеспечение использовалось (то есть использовалось с самим собой). Нижний / верхний треугольники будут содержать количество раз, когда использовалась каждая комбинация, которая всегда должна быть равна или меньше количества раз, которое использовалось реже используемой пары.

Другие вопросы по тегам