如何在 R 中的这 2 个场景中为高斯分布生成数据?

Sof*_*fia 5 r normal-distribution

在 Tibshirani 的“统计学习元素”中,当比较最小二乘法/线性模型和 knn 时,说明了这两种情况:

场景 1:每个类中的训练数据是从具有不相关分量和不同均值的双变量高斯分布生成的。

场景 2:每个类中的训练数据来自 10 个低方差高斯分布的混合,每个均值本身按高斯分布。

这个想法是第一个更适合最小二乘/线性模型,第二个更适合 knn 类模型(那些与我理解的差异更大的模型,因为 knn 考虑了最近的点而不是所有点)。

在 R 中,我将如何模拟两种场景的数据?

最终目标是能够重现这两种情况,以证明线性模型能有效地解释第一种情况,而不是第二种情况。

谢谢!

小智 1

这可能是场景 1

library(mvtnorm)

N1 = 50
N2 = 50
K = 2

mu1 = c(-1,3)
mu2 = c(2,0)

cov1 = 0
v11 = 2
v12 = 2
Sigma1 = matrix(c(v11,cov1,cov1,v12),nrow=2)

cov2 = 0
v21 = 2
v22 = 2
Sigma2 = matrix(c(v21,cov2,cov2,v22),nrow=2)

x1 = rmvnorm(N1,mu1,Sigma1)
x2 = rmvnorm(N2,mu2,Sigma2)
Run Code Online (Sandbox Code Playgroud)

这可能是从高斯混合进行模拟的候选者:

BartSimpson <- function(x,n = 100){ 
   means <- as.matrix(sort(rnorm(10)))
   dens <- .1*rowSums(apply(means,1,dnorm,x=x,sd=.1)) 
   rBartSimpson <- c(apply(means,1,rnorm,n=n/10,sd=.1))
   return(list("thedensity" = dens,"draws" = rBartSimpson))
}

x <- seq(-5,5,by=.01)

plot(x,BartSimpson(x)$thedensity,type="l",lwd=4,col="yellow2",xlim=c(-4,4),ylim=c(0,0.6))
Run Code Online (Sandbox Code Playgroud)