あなたはRのソースファイルでそれを見つけることができます:それはstats
パッケージからであるので、私たちはR-<version>/src/library/stats/
内で見つける
R-<version>/src/library/stats/src/pacf.c
- 。
R-<version>/src/library/stats/src
はCコードなので、
- 最後に、
R-<version>/src/library/stats/src
の下に複数の.c
ファイルがあります。これらのファイルで "ARMAtoMA"を検索すると、pacf.c
を見つけることができます。
私はここにあなたのためのコピーを作成します:
SEXP ARMAtoMA(SEXP ar, SEXP ma, SEXP lag_max)
{
int i, j, p = LENGTH(ar), q = LENGTH(ma), m = asInteger(lag_max);
double *phi = REAL(ar), *theta = REAL(ma), *psi, tmp;
SEXP res;
if(m <= 0 || m == NA_INTEGER)
error(_("invalid value of lag.max"));
PROTECT(res = allocVector(REALSXP, m));
psi = REAL(res);
for(i = 0; i < m; i++) {
tmp = (i < q) ? theta[i] : 0.0;
for(j = 0; j < min(i+1, p); j++)
tmp += phi[j] * ((i-j-1 >= 0) ? psi[i-j-1] : 1.0);
psi[i] = tmp;
}
UNPROTECT(1);
return res;
}