相关分类和连续数据的模拟
Simulation of correlated categorical and continuous data
我想模拟相关的分类数据和连续数据。如何在 R 中实现?
#For example, how to simulate the data in a way that these two variable are correlated?
x <- sample( LETTERS[1:4], 1000, replace=TRUE, prob=c(0.1, 0.2, 0.65, 0.05) ) #Categorical variable
y <- runif(1000,1,5) #Continuous variable
任何想法将不胜感激!
这是否为您提供了您正在寻找的东西?
您可以更改 sd 值以修改相关量。
k <- 1:4
n <- 1000
x <- sample( LETTERS[k], n, replace=TRUE, prob=c(0.1, 0.2, 0.65, 0.05) )
y <- as.vector(sapply(k,function(x) rnorm(round(n/length(k)),mean=x,sd=2)))
这是一个使用联结函数的方法。使用较大的 alpha
值以获得更高的相关性。
library(copula)
n <- 1000
alpha <- 5
u <- rCopula(n, claytonCopula(alpha))
u1 <- u[,1]
u2 <- u[,2]
x <- ifelse(u1 < 0.1, "A",
ifelse(u1 < 0.3, "B",
ifelse(u1 < 0.95, "C", "D")))
y <- qunif(u2, 1, 5)
plot(factor(x), y)
plot(factor(x))
plot(density(y))
由 reprex package (v0.3.0)
创建于 2021-02-21
我想模拟相关的分类数据和连续数据。如何在 R 中实现?
#For example, how to simulate the data in a way that these two variable are correlated?
x <- sample( LETTERS[1:4], 1000, replace=TRUE, prob=c(0.1, 0.2, 0.65, 0.05) ) #Categorical variable
y <- runif(1000,1,5) #Continuous variable
任何想法将不胜感激!
这是否为您提供了您正在寻找的东西? 您可以更改 sd 值以修改相关量。
k <- 1:4
n <- 1000
x <- sample( LETTERS[k], n, replace=TRUE, prob=c(0.1, 0.2, 0.65, 0.05) )
y <- as.vector(sapply(k,function(x) rnorm(round(n/length(k)),mean=x,sd=2)))
这是一个使用联结函数的方法。使用较大的 alpha
值以获得更高的相关性。
library(copula)
n <- 1000
alpha <- 5
u <- rCopula(n, claytonCopula(alpha))
u1 <- u[,1]
u2 <- u[,2]
x <- ifelse(u1 < 0.1, "A",
ifelse(u1 < 0.3, "B",
ifelse(u1 < 0.95, "C", "D")))
y <- qunif(u2, 1, 5)
plot(factor(x), y)
plot(factor(x))
plot(density(y))
由 reprex package (v0.3.0)
创建于 2021-02-21