R是否有用于在多维空间中生成随机数的包?例如,假设我想在长方体或球体内生成1000个点。生成多维数据
生成多维数据
回答
也检查出copula包。这将在具有统一边距的立方体/超立方体内生成数据,但会生成您设置的相关结构。生成的变量然后可以被转换为表示其他形状,但仍然与非独立关系。
如果您想要更复杂的形状,但对形状内的统一和相互独立感到满意,那么您可以进行拒绝采样:在包含形状的立方体内生成数据,然后测试这些点是否在您的形状内,如果没有,那么继续这样做直到有足够的分数。
长方体:
df <- data.frame(
x = runif(1000),
y = runif(1000),
z = runif(1000)
)
head(df)
x y z
1 0.7522104 0.579833314 0.7878651
2 0.2846864 0.520284731 0.8435828
3 0.2240340 0.001686003 0.2143208
4 0.4933712 0.250840233 0.4618258
5 0.6749785 0.298335804 0.4494820
6 0.7089414 0.141114804 0.3772317
球:
df <- data.frame(
radius = runif(1000),
inclination = 2*pi*runif(1000),
azimuth = 2*pi*runif(1000)
)
head(df)
radius inclination azimuth
1 0.1233281 5.363530 1.747377
2 0.1872865 5.309806 4.933985
3 0.2371039 5.029894 6.160549
4 0.2438854 2.962975 2.862862
5 0.5300013 3.340892 1.647043
6 0.6972793 4.777056 2.381325
注:编辑成包括代码领域
我有超立方体与n维球面选择产生dataframes与笛卡尔一些功能通过超立方体或n球体对任意数量的尺寸进行坐标和保证均匀分布:
GenerateCubiclePoints <- function(nrPoints,nrDim,center=rep(0,nrDim),l=1){
x <- matrix(runif(nrPoints*nrDim,-1,1),ncol=nrDim)
x <- as.data.frame(
t(apply(x*(l/2),1,'+',center))
)
names(x) <- make.names(seq_len(nrDim))
x
}
在nrDim
尺寸与center
和l
一个边的长度的立方体/超立方体。
对于一个正球体nrDim
尺寸,你可以做类似的事情,在这里r
为半径:
GenerateSpherePoints <- function(nrPoints,nrDim,center=rep(0,nrDim),r=1){
#generate the polar coordinates!
x <- matrix(runif(nrPoints*nrDim,-pi,pi),ncol=nrDim)
x[,nrDim] <- x[,nrDim]/2
#recalculate them to cartesians
sin.x <- sin(x)
cos.x <- cos(x)
cos.x[,nrDim] <- 1 # see the formula for n.spheres
y <- sapply(1:nrDim, function(i){
if(i==1){
cos.x[,1]
} else {
cos.x[,i]*apply(sin.x[,1:(i-1),drop=F],1,prod)
}
})*sqrt(runif(nrPoints,0,r^2))
y <- as.data.frame(
t(apply(y,1,'+',center))
)
names(y) <- make.names(seq_len(nrDim))
y
}
2名维
,这些给:
从代码:
T1 <- GenerateCubiclePoints(10000,2,c(4,3),5)
T2 <- GenerateSpherePoints(10000,2,c(-5,3),2)
op <- par(mfrow=c(1,2))
plot(T1)
plot(T2)
par(op)
@Richie:thx的调整 – 2011-02-16 22:20:35
非常感谢您的帮助和答复... – Pradeep 2011-02-17 06:26:33
几年前,我制作了一个名为geozoo的软件包。它在CRAN上可用。
install.packages("geozoo")
library(geozoo)
它有许多不同的功能来生成N维的对象。
p = 4
n = 1000
# Cube with points on it's face.
# A 3D version would be a box with solid walls and a hollow interior.
cube.face(p)
# Hollow sphere
sphere.hollow(p, n)
# Solid cube
cube.solid.random(p, n)
cube.solid.grid(p, 10) # evenly spaced points
# Solid Sphere
sphere.solid.random(p, n)
sphere.solid.grid(p, 10) # evenly spaced points
我最喜欢看动画的人之一是沿着它的边缘有点的立方体,因为它是我制作的第一个对象之一。它也给你一个顶点之间的距离感。
# Cube with points along it's edges.
cube.dotline(4)
此外,请查看网站:http://streaming.stat.iastate.edu/~dicook/geometric-data/。它包含图片和可下载的数据集。
希望它能满足您的需求!
- 1. Microsoft MSSQL生成的访问数据多维数据集BI
- 2. 循环多维数组为Google Charts生成多维数组
- 3. 从数据库结果生成多维数组递归函数
- 4. PHP从多维数组生成列表
- 5. For-Loop生成多维数组
- 6. 生成与foreach循环多维数组
- 7. 为多维数组随机生成值
- 8. 生成从多维阵列
- 9. 从用户生成的多维数组输出数据
- 10. 查看浏览多维数据集时生成的MDX查询
- 11. 生成二维数组值
- 12. OLAP多维数据集 - 数据多维数据集
- 13. Visual Studio数据生成和多对多
- 14. 在Python中生成多维网格
- 15. 生成二维多边形的斜边
- 16. 多维数据MDX
- 17. 与多维数据
- 18. 多维数组成员数据成员运行时错误
- 19. array_push成多维数组
- 20. 值生成的数组的多维数组
- 21. 在C++的多维数组中生成唯一的随机数
- 22. 了解数据库维度和多维数据集维度
- 23. 生成数据
- 24. PHP多维数组 - 数据
- 25. 如何从csv数据生成二维数组?
- 26. Xtext - 生成对象 - 生成更多数据
- 27. 生成(多)flare.json数据从平面JSON
- 28. 从数据库生成多个pdf
- 29. Node.js - 生成多部分/表单数据
- 30. SignInManager.PasswordSignInAsync生成许多数据库访问
我想要在指定形状的边界内生成点..说一个立方体,立方体,球体?? ....有没有什么办法可以产生这样的数据集? – Pradeep 2011-02-16 13:46:14
编辑中添加的代码。 – Andrie 2011-02-16 13:56:18