r - 如何生成混合数据并保持每列的关系或相关性?
问题描述
我正在研究混合数据的聚类。为了测试我的算法,我需要使用生成的数据进行一些模拟。我知道使用 rnorm 生成数字属性,并使用字母样本进行分类?但问题是使一列与另一列之间的关系(数字和分类属性)。我不能只制作随机值和属性而没有任何关系。这种关系必须有意义。例如,如果我刚刚生成随机值,假设我有产品变量和价格。
product price
pen $500
说不通,关系就乱了。有什么建议吗?
我制作了这段代码,但似乎还不够好
n <- 500
prb <- 0.90
c1 = sample(2:5, 1)
c2 = sample(7:10, 1)
c3 = sample(12:15, 1)
x1 <- sample(c("A","B"), 1.5*n, replace = TRUE, prob = c(prb, 1-prb))
x1 <- c(x1, sample(c("A","B"), 1.5*n, replace = TRUE, prob = c(1-prb, prb)))
x1 <- as.factor(x1)
x2 <- sample(c("C","D","E"), n, replace = TRUE, prob = c(0.90, 0.05, 0.05))
x2 <- c(x2, sample(c("C","D","E"), n, replace = TRUE, prob = c(0.05, 0.9, 0.05)))
x2 <- c(x2, sample(c("C","D","E"), n, replace = TRUE, prob = c(0.05, 0.05, 0.9)))
x2 <- as.factor(x2)
x3 <- sample(c("X","Y"), 1.5*n, replace = TRUE, prob = c(0.6, 0.4))
x3 <- c(x3, sample(c("X","Y"), 1.5*n, replace = TRUE, prob = c(0.4, 0.6)))
x3 <- as.factor(x3)
x4 <- c(rnorm(n, mean = c1), rnorm(n, mean = c2), rnorm(n, mean = c3))
x5 <- c(rnorm(n, mean = c1+20), rnorm(n, mean = c2+30), rnorm(n, mean = c3+40))
x <- data.frame(x1,x2,x3,x4,x5)
解决方案
您的问题提到了两个变量,产品和价格。您上面的代码创建了一个包含 5 个变量的 data.frame。我不是 100% 确定你在追求什么,但我认为你需要这样的东西。
对于每个产品,您可以生成平均值和标准差。您可以随机挑选产品,然后使用适当的均值和标准差从该产品的分布中生成一个值。
您没有提供任何数据,所以我将使用 iris 数据进行说明。认为 Species = 产品和 Petal.Length = 价格。
## First collect statistics from the original data
MEANS = aggregate(iris$Petal.Length, list(iris$Species), mean)
SD = aggregate(iris$Petal.Length, list(iris$Species), sd)
NumSpecies = length(levels(iris$Species))
现在我们可以随机生成一个 Species 并从该 Species 的分布中生成一个 Petal.Length。
NumNew = 10
RS = sample(NumSpecies, NumNew, replace=TRUE)
NewSpecies = levels(iris$Species)[RS]
NewPetalLength = rnorm(NumNew, MEANS$x[RS], SD$x[RS])
NewData = data.frame(NewSpecies, NewPetalLength)
NewData
NewSpecies NewPetalLength
1 virginica 5.826106
2 versicolor 3.711405
3 virginica 5.136330
4 versicolor 3.979712
5 versicolor 3.379810
6 versicolor 4.017866
7 versicolor 4.141408
8 virginica 5.817107
9 setosa 1.563924
10 virginica 5.456761
推荐阅读
- python - 使用多处理池将 python 输出写入文件时遇到问题
- data-structures - 创建和可视化链接列表
- bootstrap-4 - 在引导程序 4 中将表缩小到屏幕大小
- unity3d - Print/Debug.log 在 Unity 控制台中不显示输出
- email - 域和子域之间的电子邮件不起作用
- python - 绘制两个变量然后用第三个变量着色
- python - 如果顺序更改,如何在熊猫中添加值
- ios - 无法使用 mapKit 从 ViewController 将坐标发送到具有委托的另一个 viewController
- javascript - 应用 HOC 后 PropTypes 不可用
- angular - Phonegap NFC 在两个设备之间发送和读取数据