全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2365 4
2010-04-11
我作了一个rnorm(1000,100,100),需要这1000个数字都是大于0的,请问怎么产生?谢谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-4-11 14:54:48
你这个是属于半正态分布的上半部分,abs(rnorm())?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-4-11 16:30:34
你先弄清楚自己要产生的随机数的分布,然后再按随机数产生办法产生即可。
很可能如二楼所说你要得是截断正态分布。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-7-2 13:21:49
截断的正太分布从某种意义已经不服从正太分布了。我写了一个算法得到的数据是正太分布。
a<-rnorm(1000,100,100)
while(length(which(a<0))>0){
  a[which(a<0)]<-rnorm(length(which(a<0)),100,100)
}
shapiro.test(a)
思路:
首先生存1000个服从u=100,sd=100的正态分布数列
然后找到那些小于0的,重新生成数目一样的正态分布数列。
用while重复这个过程,直到没有小于0的
最后用shapiro.test()检验通过。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-7-2 13:27:57
不好意思,不管是abs()方法和我那个循环算法,正态性检验都没有通过。
估计只能先生成数列,然后每个数值加上数列中最小值和0 的差
a<-rnorm(1000,100,100)
a<-a+abs(min(a))
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群