我正在尝试创建一个共现数据的数据集,其中感兴趣的变量是一个软件应用程序,我想模拟一个n乘n的矩阵,其中每个单元格的数字都表示应用程序A与应用程序B一起使用的次数。我如何在R中创建一个数据集,我可以使用它来测试一组聚类和分区算法。我将使用什么模型以及如何生成R中的数据?模拟R中的同现数据
1
A
回答
1
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)
注:这个答案已被编辑,以反映事实的共生矩阵必须是对称的。
1
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
对角线包含的时间使用各软件的数量(即具有自身使用)。下部/上部三角形将包含每个组合使用的次数,该数量总是必须等于或少于使用不常使用的次数。
+0
这正是我期望生成的,所以谢谢。但是,仍然存在一个问题,我应该使用什么抽样分布来生成模拟数据? – amber4478
相关问题
- 1. 模拟数据和R中的概率模型
- 2. R中GARCH模拟
- 3. 将不同的模型拟合到R中的每个数据子集
- 4. R中的经济模拟
- 5. 根据R中特定规则进行数据模拟
- 6. 拟合分布数据中的R
- 7. R/Perlin噪声中的真实模拟高程数据
- 8. 模拟满足R中线性方程的数据吗?
- 9. 将重复模拟的数据保存在R中
- 10. 模拟R中回归
- 11. 模拟来自对数正态分布的数据R
- 12. 如何在R中模拟MAR缺失数据?
- 13. R“非随机的”数模拟论证
- 14. R:模拟2级模型
- 15. 模拟器上出现的Android UI小部件与模拟器中的不同
- 16. R中的拟合指数
- 17. 不同模态函数中的R图
- 18. 卡住R中的包示例代码 - 模拟数据以适合模型
- 19. Java中的高速缓存模拟器,实现数据块
- 20. 模拟数据丢失和错误的百分比r
- 21. 排序数据和随机模拟的chisq测试在R
- 22. 如何用R模拟相关的二进制数据?
- 23. 模拟来自Gompertz曲线的数据R
- 24. 模拟来自经度和纬度的地理数据R
- 25. 数据出现在模拟器中,但不在设备中
- 26. python中的同时模拟
- 27. 使用现有数据和概率模拟数据
- 28. 无法模拟Android模拟器中的位置数据
- 29. 模拟/模拟postgresql中的重负载数据库服务器
- 30. R中的模拟for循环
您打算使用哪种聚类/分区算法或软件包?这通常会决定您输入数据的格式。 – thelatemail
我正在考虑使用算法组合来测试它们的性能。但是,我需要样本数据来测试它们,所以如何创建数据集? – amber4478