首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使p值只打印4位数字而不是R中的科学记数法?

如何使p值只打印4位数字而不是R中的科学记数法?
EN

Stack Overflow用户
提问于 2011-10-20 03:07:22
回答 2查看 2K关注 0票数 2

如何使p值只打印4位数字而不是R中的科学记数法?我尝试使用选项(digits = 3,scipen = 12),但它不起作用...这里有一个例子..。

代码语言:javascript
复制
>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)"
EN

回答 2

Stack Overflow用户

发布于 2011-10-20 03:31:16

不太确定你想在这里做什么。感谢这个可重现的例子:输出是

代码语言:javascript
复制
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值已下溢到恰好为零:

代码语言:javascript
复制
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值,你必须采取一些特殊的方法:

代码语言:javascript
复制
(pval <- pchisq(3090,2,lower.tail=FALSE,log.p=TRUE))
[1] -1545

因此,这大约是10^pval/log(10) = 10^(-671) R的最小可表示值通常约为1e-308,请参见.Machine$double.xmin

票数 2
EN

Stack Overflow用户

发布于 2011-10-20 04:10:51

我也不确定您想要什么,但我猜您正在寻找类似于<0.0001的东西,类似于SAS的输出。为此,我会使用format.pval函数,或者使用printCoefmat,这取决于您有多少个测试。eps是一个公差;低于该值的值将打印为< [eps]

代码语言:javascript
复制
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 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7826733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档