首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在日志空间中将P转换为Z

在日志空间中将P转换为Z
EN

Stack Overflow用户
提问于 2021-05-17 02:28:13
回答 1查看 36关注 0票数 2

给定一个-log10(P)值,我想计算日志空间中的Z得分,我该怎么做呢?

那么,给定以下代码,如何重新编码最后一行,以便从日志空间中的log10P计算Z?

代码语言:javascript
复制
Z=10
log10P  = -1*(pnorm(-abs(Z),log.p = T)*1/log(10) + log10(2))
Z== -1*(qnorm(10^-log10P/2)) # <- this needs to be in log space. 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-17 03:24:04

qnorm也有一个类似于pnormlog.p参数,所以您可以逆转最初用于获取log10P的操作(我花了几次尝试才弄明白这一点……)

我稍微调整了一下你的log10P计算。

代码语言:javascript
复制
log10P_from_Z <- function(Z) {
    abs((pnorm(-abs(Z),log.p=TRUE)+log(2))/log(10))
}
Z_from_log10P <- function(log10P) {
    -1*qnorm(-(log10P*log(10))-log(2), log.p=TRUE)
}

我们可以检查往返精度(例如,从-log10(p)Z再转换回来,看看我们与原始值有多接近)。这对于20左右的值非常有效,但对于较大的值,确实会产生一点舍入错误(必须更仔细地查看是否有任何可以补救的地方)。

代码语言:javascript
复制
zvec <- seq(20,400)
err <- sapply(zvec, function(z) {
   abs(Z_from_log10P(log10P_from_Z(z))-z)
})

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67560210

复制
相关文章

相似问题

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