У меня есть степень свободы и среднего. Мне нужно было бы рассчитать стандартное отклонение.расчет отклонения
Любая помощь очень ценится.
У меня есть степень свободы и среднего. Мне нужно было бы рассчитать стандартное отклонение.расчет отклонения
Любая помощь очень ценится.
Все еще не на 100% уверены, что вы пытаетесь сделать, но вот одна попытка (использование диапазона 95% для t-статистики) ... У меня есть только один файл (это 3 элемента вы вставили), и это называется stats1. Я извлекая соответствующее поле из файла (ов) с использованием AWK, и бросить его на R.
awk -F'>' '$1 ~/Overall/{print $2}' stats* | Rscript -e 'qt(0.975, as.numeric (readLines ("stdin"))) '
[1] 2.940089 2.776445 12.706205
Используя некоторые обработки текста или инструмент данных пререканий в сочетании со статистическим пакетом, такими как R, безусловно, делает (в частности, вы можете использовать R's t.test(VECTOR, MU)
), но awk
, безусловно, соответствует задаче и может даже иметь определенные преимущества. Во всяком случае, я добавил сценарий (bash), который ожидает, что его ввод будет иметь одно наблюдение данных в каждой строке и испустит строку, как описано в документации «Справка» сценария.
Здесь для сравнения являются выписка из вывода с помощью t.test()
и запустить с помощью сценария (т-тест):
$ R
> t.test(c(1,2,3), mu=0)
One Sample t-test
t = 3.4641, df = 2, p-value = 0.07418
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
-0.4841377 4.4841377
$ (echo 1; echo 2; echo 3) | t-stat
3 2 0.666667 3.4641
#!/bin/bash
# USE AT YOUR OWN RISK
# For help: $0 --help
VERSION=0.1.1
# Requires: awk
BN=$(basename "$0")
function help {
cat <<EOF
Syntax: $0 [n1 [FILE]]
Compute the sample mean, the sample variance, and the t-statistic for
the array of numbers in column n1 of the input, where n1 defaults to 1,
and FILE defaults to STDIN.
The output consists of a single line of four values:
n mean variance t
where "n" is the sample size (possibly 0),
"mean" is the sample mean,
"variance" is the average of the squared deviations from the mean, and
"t" is the sample t-statistic, computed as
mean * sqrt(n * ss/(n-1));
If a statistic cannot be computed, an asterisk (*) is used in its place.
If the value in the specified field in the input is null or
non-numeric, it is ignored.
If a file is specified as "-" then STDIN is read.
Example:
$BN <<< $'1\n2\n3'
3 2 2 3.4641
EOF
}
function die { echo "$BN: [email protected]" >&2 ; exit 1 ; }
case "$1" in
-h | --help)
help
exit
;;
-v | --verbose)
VERBOSE=1
shift
;;
esac
# Default:
file=-
if [ $# = 0 ] ; then
f1=1
elif [ "$1" = - ] ; then
f1=1
else
f1="$1"
shift
check=`expr "$f1" : "\([0-9]*\)"`
if [ "$f1" != "$check" ] ; then die a non-numeric field was specified ; fi
fi
if [ $# != 0 ] ; then file="$1" ; fi
awk -v verbose="$VERBOSE" -v f1="$f1" '
BEGIN { a1=0; s1=0; n=0; }
NF < f1 { next }
$f1 == "" || ($f1+0 != $f1) { next }
{ n++; a1 += $f1; s1 += $f1*$f1; }
END {
s="*";
if (n == 0) {print 0, s, s, s; exit }
avg = a1/n;
var = s1/n - avg*avg;
if (var == 0) { print n, avg, var, s; exit}
tstat = avg * sqrt((n-1)/var);
print n, avg, var, tstat;
} ' "$file"
Первое предложение было бы прояснить ваш вопрос, определить, где ваш поступают данные и как они выглядят. Также я не уверен, насколько хорошо подходит awk для статистики, хотя я очень люблю его для обработки текста. Вы считали ** R **? – tink
Или любой язык программирования, который не предназначен исключительно для текста: Ruby, Perl, Python все входят в стандартную комплектацию большинства дистрибутивов Linux в наши дни. Кроме того, я не очень разбираюсь в статистике, но t-статистика, вероятно, не является «сложной математической задачей», если у вас есть все необходимые ей входы. – Amadan
Что такое доверительный интервал для вашей t-статистики? Не то, чтобы я статистик =} – tink