确保 uniroot() 中的间隔?
Securing the interval in uniroot()?
我想知道当 q
几乎在 0
和 2
之间时,我是否可以让 uniroot()
工作?
目前,uniroot()
仅适用于 q > = 3
。
P.S.我改变了间隔限制,以及在uniroot()
中使用extendInt = "downX"
,其中none成功了。
这是我的 R 代码:
f <- function(x, alpha = .05, q = 2, df1 = 3, df2 = 108){
alpha - suppressWarnings(pf(q, df1, df2, x, lower.tail = FALSE))
}
curve(f)
sapply(c(.05, .95),
function(i) uniroot(f, interval = c(0, 2e2), alpha = i, q = 2, df1 = 3, df2 = 108)[[1]])
你的问题是对于你指定的值(alpha=0.05,q=2,df1=3,df2=108),累积分布函数似乎没有达到你想要的任何值非中心参数(您的x
)。
f <- function(x, alpha = .05, q = 2, df1 = 3, df2 = 108){
alpha - suppressWarnings(pf(q, df1, df2, x,
lower.tail = FALSE))
}
您可以通过查看曲线最容易地看出这一点:
png("c1.png")
curve(f(x,alpha=0.05,q=2,df1=3,df2=108),
from=1e-8,to=2e2,log="x")
dev.off()
(曲线从 x=0
开始为负,然后下降 ...)
蛮力探索不同 alpha、ncp、q 会发生什么...
library(ggplot2)
dd <- expand.grid(alpha=seq(0.025,0.975,by=0.025),
q=seq(2,4.75,by=0.25),
x=emdbook::lseq(1e-2,2e2,length.out=51))
dd$z <- c(plyr::aaply(dd,1,
function(z) with(z,f(alpha=alpha,q=q,x=x))))
ggplot(dd,aes(x,alpha,z=z))+geom_raster(aes(fill=z))+
facet_wrap(~q,labeller=label_both)+
scale_x_log10(expand=c(0,0))+
scale_y_continuous(expand=c(0,0))+
geom_contour(breaks=0,colour="red")+
geom_hline(yintercept=c(0.05,0.95),
colour="magenta",lty=2)
ggsave("c2.png")
红色曲线是零等高线:水平虚线是您尝试寻找根的横断面。您可以看到,对于低 q
,横断面不与等高线相交。
这在统计学上意味着什么,我没想过...
我想知道当 q
几乎在 0
和 2
之间时,我是否可以让 uniroot()
工作?
目前,uniroot()
仅适用于 q > = 3
。
P.S.我改变了间隔限制,以及在uniroot()
中使用extendInt = "downX"
,其中none成功了。
这是我的 R 代码:
f <- function(x, alpha = .05, q = 2, df1 = 3, df2 = 108){
alpha - suppressWarnings(pf(q, df1, df2, x, lower.tail = FALSE))
}
curve(f)
sapply(c(.05, .95),
function(i) uniroot(f, interval = c(0, 2e2), alpha = i, q = 2, df1 = 3, df2 = 108)[[1]])
你的问题是对于你指定的值(alpha=0.05,q=2,df1=3,df2=108),累积分布函数似乎没有达到你想要的任何值非中心参数(您的x
)。
f <- function(x, alpha = .05, q = 2, df1 = 3, df2 = 108){
alpha - suppressWarnings(pf(q, df1, df2, x,
lower.tail = FALSE))
}
您可以通过查看曲线最容易地看出这一点:
png("c1.png")
curve(f(x,alpha=0.05,q=2,df1=3,df2=108),
from=1e-8,to=2e2,log="x")
dev.off()
(曲线从 x=0
开始为负,然后下降 ...)
蛮力探索不同 alpha、ncp、q 会发生什么...
library(ggplot2)
dd <- expand.grid(alpha=seq(0.025,0.975,by=0.025),
q=seq(2,4.75,by=0.25),
x=emdbook::lseq(1e-2,2e2,length.out=51))
dd$z <- c(plyr::aaply(dd,1,
function(z) with(z,f(alpha=alpha,q=q,x=x))))
ggplot(dd,aes(x,alpha,z=z))+geom_raster(aes(fill=z))+
facet_wrap(~q,labeller=label_both)+
scale_x_log10(expand=c(0,0))+
scale_y_continuous(expand=c(0,0))+
geom_contour(breaks=0,colour="red")+
geom_hline(yintercept=c(0.05,0.95),
colour="magenta",lty=2)
ggsave("c2.png")
红色曲线是零等高线:水平虚线是您尝试寻找根的横断面。您可以看到,对于低 q
,横断面不与等高线相交。
这在统计学上意味着什么,我没想过...