如何使p值只打印4位数字而不是R中的科学记数法?我尝试使用选项(digits = 3,scipen = 12),但它不起作用...这里有一个例子..。
>options(digits=3, scipen=12)
>Oi <- c(A=321, B=712, C=44)
>Ei <- c(A=203, B=28, C=6)
>chisq.test(Oi, p=Ei,rescale.p=T)"发布于 2011-10-20 03:31:16
不太确定你想在这里做什么。感谢这个可重现的例子:输出是
cc <- chisq.test(Oi,p=Ei,rescale.p=TRUE)
print(cc)
Chi-squared test for given probabilities
data: Oi
X-squared = 3090, df = 2, p-value < 0.00000000000000022检查对象的结构发现,本例中的p值已下溢到恰好为零:
List of 9
$ statistic: Named num 3090
..- attr(*, "names")= chr "X-squared"
$ parameter: Named num 2
..- attr(*, "names")= chr "df"
$ p.value : num 0
$ method : chr "Chi-squared test for given probabilities"
$ data.name: chr "Oi"
$ observed : Named num [1:3] 321 712 44
..- attr(*, "names")= chr [1:3] "A" "B" "C"
$ expected : Named num [1:3] 922.5 127.2 27.3
..- attr(*, "names")= chr [1:3] "A" "B" "C"
$ residuals: Named num [1:3] -19.8 51.8 3.2
..- attr(*, "names")= chr [1:3] "A" "B" "C"
$ stdres : Named num [1:3] -52.29 55.2 3.25
..- attr(*, "names")= chr [1:3] "A" "B" "C"
- attr(*, "class")= chr "htest"我认为,如果你想从这个测试中得到确切的p值,你必须采取一些特殊的方法:
(pval <- pchisq(3090,2,lower.tail=FALSE,log.p=TRUE))
[1] -1545因此,这大约是10^pval/log(10) = 10^(-671) R的最小可表示值通常约为1e-308,请参见.Machine$double.xmin
发布于 2011-10-20 04:10:51
我也不确定您想要什么,但我猜您正在寻找类似于<0.0001的东西,类似于SAS的输出。为此,我会使用format.pval函数,或者使用printCoefmat,这取决于您有多少个测试。eps是一个公差;低于该值的值将打印为< [eps]。
Oi <- c(A=321, B=712, C=44)
Ei <- c(A=203, B=28, C=6)
tt <- chisq.test(Oi, p=Ei,rescale.p=T)
format.pval(tt$p.value, eps=0.0001)
# [1] "<0.0001"
ttp <- data.frame(Chisq=tt$statistic, p.value=tt$p.value)
rownames(ttp) <- "Oi vs Ei"
printCoefmat(ttp, has.Pvalue=TRUE, eps.Pvalue=0.0001)
# Chisq p.value
# Oi vs Ei 3090 <0.0001 ***
# ---
# Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 https://stackoverflow.com/questions/7826733
复制相似问题