找出参数均值与 0 R 的标准差有多少

Find out how many standard deviations a parameters mean is from 0 R

我有一个 stanfit 对象,我已将其制作成数据框。此数据框由 15 列和数千行组成。每列都是一个参数(例如 Beta1、Beta2、Beta3,其中每个 Beta 都是某种土地覆盖)。第一步是仅从 stanfit 对象中提取 beta 参数。

beta <- as.data.frame(data)
beta <- beta[, grep("beta", names(beta))]

我的数据看起来像这样:

beta <- data.frame(Beta1 = c(-7.595932, -6.451768, -4.682111, -8.781488, -4.251690), 
                   Beta2 = c(0.8324450, 0.9451657, 0.8773759, 0.6044753, 0.6553995),
                   Beta3= c(22.747480, 15.477470, 18.745407, 9.622865, 21.137619), 
                   Beta4 = c(-11.684762, -13.474299, -9.783277, -7.747501, -12.352081))

正如我提到的,在我的真实数据中我有数千行。我想找出每个 betas(beta1,2,3,4) 均值与 0 的标准差有多少。我尝试使用 summary 函数,但这里我只得到分位数、均值和中位数。我想知道每个参数离零有多近或多远,这就是为什么我想知道参数均值与 0 有多少个标准差。

有没有人遇到过同样的问题?

一种简单的基础 R 方法,使用 apply 在列上“循环”:

apply(beta, 2, function(x) mean(x)/sd(x)) 

#     Beta1     Beta2     Beta3     Beta4 
# -3.318340  5.345975  3.369771 -4.865303 

您可以使用

手动检查一两列
mean(beta[,1]) / sd(beta[,1]) #change the 1 to whichever column you want to check

使用 matrixStats 包可能会更快。

library(matrixStats)
beta <- as.matrix(beta)
colMeans2(beta) / colSds(beta)
# [1] -3.318340  5.345975  3.369771 -4.865303