Sono curioso di sapere quale algoritmo utilizza la funzione media di R. C'è qualche riferimento alle proprietà numeriche di questo algoritmo?Quale algoritmo usa R per calcolare la media?
ho trovato il seguente codice C in 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;
Sembra di fare un dritto up medio:
for (i = 0; i < n; i++) s += REAL(x)[i];
s /= n;
Poi si aggiunge quello che presumo è un correzione numerica che sembra essere la differenza media dalla media dei dati:
for (i = 0; i < n; i++) t += (REAL(x)[i] - s);
s += t/n;
Non sono stato in grado di rintracciare s algoritmo giù ovunque (significa che non è un grande termine di ricerca).
Qualsiasi aiuto sarebbe molto apprezzato.
Questa è una parte, ma come fa 'mean.R' chiama 'summary.c'? Non capisco come '.Internal (mean (x))' chiama 'summary.c'. Grazie per eventuali suggerimenti su come sono collegati i due file. Scusa se questo è troppo lontano dalla tua domanda. Spero solo di imparare. –
@MarkMiller: tutte le chiamate '.Internal' sono mappate in' src/main/names.c'. Cerca quel file con "mean" e vedrai quale funzione C lo chiama. Quindi puoi cercare i file sorgente per quella funzione C. Vedi [questa domanda] (http://stackoverflow.com/q/13279256/271616). –
Link a questa stessa domanda su r-devel: https://stat.ethz.ch/pipermail/r-devel/2013-July/067053.html –