Мне любопытно узнать, какую функцию использует функция R. Есть ли какая-то ссылка на числовые свойства этого алгоритма?
Я нашел следующий код C в summary.c: do_summary():
case REALSXP:
PROTECT(ans = allocVector(REALSXP, 1));
for (i = 0; i < n; i++) s += REAL(x)[i];
s /= n;
if(R_FINITE((double)s)) {
for (i = 0; i < n; i++) t += (REAL(x)[i] - s);
s += t/n;
}
REAL(ans)[0] = s;
break;
Кажется, что он делает прямое значение:
for (i = 0; i < n; i++) s += REAL(x)[i];
s /= n;
Затем он добавляет то, что я предполагаю, это числовая коррекция, которая, как представляется, является средней разницей от среднего значения данных:
for (i = 0; i < n; i++) t += (REAL(x)[i] - s);
s += t/n;
Я не смог отследить этот алгоритм где-нибудь (среднее значение не является отличным поисковым термином).
Любая помощь будет высоко оценена.