全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
5243 7
2016-03-08
准备画次序统计量的二维联合密度函数 在最后绘图的时候 程序报错: 被替换的项目不是替换值长度的倍数
了解到是因为函数中有f[x-y>=0],f[x-y<0]这么一个需要比较大小的步骤才出现这个报错
但是不知道具体该怎么改进
希望各位能给出指导

感激不尽!
程序如下:
n=1000
y=rnorm(n,0,1)
y1=sort(y)
k<-20
j<-300  #选择k=20,j=300
fun.cixu2=function(x,y)
{A=c(n,k-1,j-k-1,n-j)
B=c(0,0,0,0)
for (l in 1:4) {
  for (i in 1:A[l]) {
    B[l]=B[l]+log(i)
  }}
b=exp(B[1]-B[2]-B[3]-B[4]) #通过转化计算常数项的值            
f=rep(NA,length(x))
f[x-y<0]=b*pnorm(x,0,1)^(k-1)*(1-pnorm(x,0,1))^(n-j)*dnorm(x,0,1)*dnorm(y,0,1)*(pnorm(y,0,1)-pnorm(x,0,1))^(j-1-k) #判断x,y的大小并代入计算
f[x-y>=0]=0 #若x>=y,则函数值为0
return(f)
}
fun.cixu2(y1[20],y1[300]) #取之前得到的随机数进行代入计算
x <- seq(-3,1,length.out = 100)
y <- seq(-3,1,length.out = 100)
z= outer(x,y,fun.cixu2)
persp(x=seq(-3,1,length.out = 100),y=seq(-3,1,length.out = 100),z,theta=-25,phi=25,col='lightblue') #画出二维联合密度图像


二维码

扫码加我 拉你入群

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

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

全部回复
2016-3-9 10:46:05
你算一下这个咯:
复制代码

在我这里,结果全部是0,说明你的函数算法应该是有问题的吧
二维码

扫码加我 拉你入群

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

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

2016-3-10 00:23:52
恩恩我试了一下 因为x-y=0 所以得到的结果全都为0
其实这个函数我是想表达 对于两个自变量x,y  如果x>=y 那么函数值为0  如果 x<y 那么函数值按照上面规定的式子计算 但是因为我是新手吧 没用程序表达出我本来的意思 我本来用if语句判断的 但是画图的时候上面提示说In if (x - y < 0) { : the condition has length > 1 and only the first element will be used
所以就不知道怎么改了 改来改去都是错的。。
谢谢你的回复哟~!
二维码

扫码加我 拉你入群

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

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

2016-3-10 00:24:47
jiangbeilu 发表于 2016-3-9 10:46
你算一下这个咯:

在我这里,结果全部是0,说明你的函数算法应该是有问题的吧
恩恩我试了一下 因为x-y=0 所以得到的结果全都为0
其实这个函数我是想表达 对于两个自变量x,y  如果x>=y 那么函数值为0  如果 x<y 那么函数值按照上面规定的式子计算 但是因为我是新手吧 没用程序表达出我本来的意思 我本来用if语句判断的 但是画图的时候上面提示说In if (x - y < 0) { : the condition has length > 1 and only the first element will be used
所以就不知道怎么改了 改来改去都是错的。。
谢谢你的回复哟~!
第一次在这里提问,还不太会用
二维码

扫码加我 拉你入群

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

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

2016-3-10 09:43:11
aaaaaaaa呵呵 发表于 2016-3-10 00:24
恩恩我试了一下 因为x-y=0 所以得到的结果全都为0
其实这个函数我是想表达 对于两个自变量x,y  如果x ...
把你的函数改成这样的:
复制代码
另外:你的x与y是完全相等的,当然肯定全部是0啊。


二维码

扫码加我 拉你入群

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

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

2016-3-10 23:18:16
jiangbeilu 发表于 2016-3-10 09:43
把你的函数改成这样的:
另外:你的x与y是完全相等的,当然肯定全部是0啊。
你好,谢谢你的回复,我不太理解这样的改动是为什么呢。
我想要解决的问题主要是 我画不出来这个函数的图象。
将数值带进去计算的话,结果应该是没错的 哦其中xy的取值不是向量,是实数。
我写成那样的形式是因为 之前用if语句 画不出来图。。我就改成判断f[x-y<0]这样的了。。还是画不出来
你是第一个回复我的人 还不厌其烦 谢谢你呀。

二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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