作者koai (可笑的自以为...)
看板Statistics
标题Re: [程式] R程式错? 还是我哪里错?
时间Thu May 23 12:38:01 2013
修改一下您的程式,发现可能是dnorm这个函数定义域的问题,
或是integrate与dnorm两函数结合时的问题.
可参考我修改您的程式如下,执行下面的程式码即可看出端倪!
MU=c(10,20,30)
par(mfrow=c(1,length(MU)))
for(mu in MU){
B=function(y,mean=mu,sig=sqrt(0.24))
{
InteOut = integrate( function(x){ dnorm(x,mean,sig) },y,Inf)$value
InteOut
}
X=seq(mu-20,mu+5,.2); plot(X,sapply(X,B))
}
另外,您想写的程式我修改如下,
只要您想求的P(X>x)中的x,不要小於mean太多,
应该是不会发生类似的问题!!
B=function(y,mean=11,sig=sqrt(0.24))
{
InteOut = integrate( function(x){ dnorm(x,mean,sig) },y,Inf)$value
InteOut
}
B(1)
B(0.1)
B(0.0610746)
B(0.0610745)
X=seq(9,13,.1); plot(X,sapply(X,B))
X=seq(-15,15,.2); plot(X,sapply(X,B))
如有错误,欢迎指教讨论,谢谢!
※ 引述《aflilfesy (...)》之铭言:
: A=function()
: {
: InteOut = integrate( function(x)
: {
: dnorm(x,10,sqrt(0.24))
: },0,Inf)$value
: InteOut
: }
: A()
: 1-pnorm(0,10,sqrt(0.24))
: ----
: A() 结果是 1
: 1-pnorm(0,10,sqrt(0.24)) 结果是 1
: ----
: B=function()
: {
: InteOut = integrate( function(x)
: {
: dnorm(x,11,sqrt(0.24))
: },0,Inf)$value
: InteOut
: }
: B()
: 1-pnorm(0,11,sqrt(0.24))
: ----
: B() 结果是 3.707784e-05
: 1-pnorm(0,11,sqrt(0.24)) 结果是 1
: A()函数与B()函数的结果照理说要非常接近,但答案却完全相反。
: 高手们,可以解释一下 B()这地方结果怎麽变成这样吗?
: 我只有更改黄色部份而已
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.73.70.8
1F:→ aflilfesy:非常谢谢你,但贴在这是我已简化的,其实原式复杂许多, 05/23 13:18
2F:→ aflilfesy:以至於无法确定会不会小於mean太多。 05/23 13:19