全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
4978 4
2012-08-04
请大家帮我看看下面的代码有什么问题么?为什么运行不出来,鼠标一直是沙漏的状态,也没显示错误
(题目是这样的:为了估计x的均值,x1,x2,x3,x4已被模拟出对应概率值x1=c(1,2,4),pr1=c(1/4,1/2,1/4)
,再根据这些数据,要是x的均值的估计量的标准差小于0.1,大概还要运行多少次,因为原题的x太长,所以这里我简化了)


kehou6=function(x,pr)
{ i=length(x)
  y=0
  y[1:length(x)]=x
  repeat
    { i=i+1
      y[i]=sample(x,1,pr,replace=T)
     
      if(sd(y)<0.1)  break
    }
   i-length(x)
}
  
x1=c(1,2,4)
pr1=c(1/4,1/2,1/4)
kehou6(x1,pr1)
二维码

扫码加我 拉你入群

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

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

全部回复
2012-8-4 20:51:52
数组y里面的数只可能是1,2,4,它的sd不可能小于0.1的,所以你的repeat循环会一直运行下去
二维码

扫码加我 拉你入群

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

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

2012-8-4 21:09:58
qoiqpwqr 发表于 2012-8-4 20:51
数组y里面的数只可能是1,2,4,它的sd不可能小于0.1的,所以你的repeat循环会一直运行下去
原来是这样,但是我就是按照题目中给的x来弄得原题中的x是这样的
10,11,10.5,11.5,14,18,13,6,15,10,11.5,10.5,12,8,16,5
他们的概率我就是按照频数/16来计算的,可还是一直循环下去。

这个又是怎么回事呢》难道我编的程序方法是错误的?
二维码

扫码加我 拉你入群

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

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

2012-8-5 01:17:04
首先做个实验,稍微改造一下你的程序,其目的是看看每一次循环所对应的y的标准差sd(y)的值为多少:

x = c(10,11,10.5,11.5,14,18,13,6,15,10,11.5,10.5,12,8,16,5)
pr = rep(1 / 16, 16)
i = length(x)
y = 0
y[1:length(x)] = x
repeat
{ i = i + 1
  y[i] = sample(x,1,pr,replace=T)
  print(sd(y))
  if (i > 199) break
}

循环了很多次,但输出绝大部分都在3以上!

你希望它小于0.1,这简直就是天方夜谭!

你是不是把题目理解错了?

你所给的程序中有一句我很在意—— if (sd(y) < 0.1)  break

注意,此时你是在对全体的y求sd,那么得出的数字铁定大于0.1!

我猜想,题目可能是让你对y新产生的后n位滚动式求sd(),直到sd值小于0.1为止!

这还有可能!比如n = 2时,只要连着出现两次同一个数,repeat就会停止。


二维码

扫码加我 拉你入群

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

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

2012-8-5 21:14:53
meishanjia1900 发表于 2012-8-5 01:17
首先做个实验,稍微改造一下你的程序,其目的是看看每一次循环所对应的y的标准差sd(y)的值为多少:

x =  ...
嗯,谢谢,还需要好好消化一下
因为我刚开始接触这些,很多知识理解的不深。完整的原题是这样的:

为了估计E[X],X1,X2,……X16已经被模拟出,其数据如下10,11,10.5,11.5,14,18,13,6,15,10,11.5,10.5,12,8,16,5
再根据这些数据,如果我们要使E[X]的估计量的标准差小于0.1,大概还需要运行多少次

不知道是我理解错了还是题目错了呢?如果题目没错,那该如何写才能实现呢?
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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