У меня есть объект stanfit, который я превратил в фрейм данных. Этот фрейм данных состоит из 15 столбцов и тысяч строк. Каждый столбец — это параметр (например, Beta1, Beta2, Beta3, где каждая Beta — это какой-то ландшафт). Первым шагом было извлечение только бета-параметров из объекта stanfit.
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))
Как я уже упоминал, в моих реальных данных у меня тысячи строк. Я хочу узнать, сколько стандартных отклонений каждого бета (бета1,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