Jestem ciekawy, jaki algorytm używa funkcja algorytmu R. Czy istnieje odniesienie do właściwości liczbowych tego algorytmu?Jaki algorytm R używa do obliczania średniej?
znalazłem następujący kod C w 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;
Wydaje zrobić prosto na myśli:
for (i = 0; i < n; i++) s += REAL(x)[i];
s /= n;
Następnie dodaje co zakładam jest korekta numeryczną, która wydaje się być średnia różnica od średniej z danymi:
for (i = 0; i < n; i++) t += (REAL(x)[i] - s);
s += t/n;
I nie były w stanie śledzić jes s algorytm w dowolnym miejscu (średnia nie jest świetnym terminem wyszukiwania).
Każda pomoc będzie mile widziana.
To jest na bok, ale w jaki sposób "mean.R" nazywa się "summary.c"? Nie rozumiem, jak ".Internal (mean (x))" wywołuje "summary.c". Dziękujemy za wszelkie wskazówki dotyczące połączenia tych dwóch plików. Przepraszamy, jeśli to zbyt daleko od pytania. Mam tylko nadzieję, że się nauczę. –
@MarkMiller: Wszystkie wywołania '.Internal' są mapowane w' src/main/names.c'. Wyszukaj ten plik jako "średni", a zobaczysz, co wywołuje go funkcja C. Następnie możesz wyszukać pliki źródłowe dla tej funkcji C. Zobacz [to pytanie] (http://stackoverflow.com/q/13279256/271616). –
Link do tego samego pytania na r-devel: https://stat.ethz.ch/pipermail/r-devel/2013-July/067053.html –