\( \newcommand{\E}{\mathbb{E}} \newcommand{\Var}{\operatorname{Var}} \newcommand{\Cov}{\operatorname{Cov}} \newcommand{\Prob}{\mathbb{P}} \newcommand{\R}{\mathbb{R}} \newcommand{\N}{\mathbb{N}} \newcommand{\iid}{\overset{\text{i.i.d.}}{\sim}} \newcommand{\dto}{\xrightarrow{d}} \newcommand{\pto}{\xrightarrow{p}} \newcommand{\diff}{\mathop{}\!\mathrm{d}} \)

noisymoon API

単位根検定と反応拡散シミュレーションを、HTTP から

このサイトの記事で扱っている計算を、自分のプログラムから呼び出せる API です。

アカウントを作る・API キーを発行する →

料金

前払いのクレジット制です。使った分だけ残高から引かれます。

項目 料金
ADF / KPSS 検定 1 回 ¥1
Gray-Scott 百万セル・ステップあたり ¥0.01(256×256 格子・1 万ステップで約 ¥6.6)
購入単位 ¥500 / ¥1,000 / ¥5,000(税込・クレジットカード)
  • クレジットの有効期限は購入から 180 日です。
  • 入力の誤りなどで計算が失敗したときは課金されません。シミュレーションが失敗した場合は返金されます。
  • 記事の中の「試す」デモは無料です(系列 500 点まで・1 分あたり 10 回まで)。

使い方

1. API キーを発行する

アカウント からメールアドレスでログインし、クレジットを購入してキーを発行します。キーは nm_ で始まる文字列で、発行時に一度だけ表示されます。

2. 呼び出す

キーは X-API-Key ヘッダーで送ります。

curl -X POST https://api.noisymoon.jp/v1/tests/adf \
  -H "X-API-Key: $NOISYMOON_KEY" \
  -d '{"series": [0.12, 0.35, 0.10, 0.44, 0.61, 0.52, 0.80, 0.77, 0.95, 1.10], "regression": "c"}'

Python からは次のように使えます。

import os, requests

API = "https://api.noisymoon.jp"
H = {"X-API-Key": os.environ["NOISYMOON_KEY"]}

r = requests.post(f"{API}/v1/tests/adf", headers=H,
                  json={"series": list(y), "regression": "ct", "autolag": "AIC"})
r.raise_for_status()
res = r.json()
print(res["statistic"], res["pvalue"], res["critical_values"])

シミュレーションは時間がかかるので「ジョブ」として受け付け、終わってから結果を取りに行きます。

import io, time, numpy as np

job = requests.post(f"{API}/v1/sim/gray-scott", headers=H,
                    json={"n": 256, "steps": 10000, "F": 0.0367, "k": 0.0649, "init": "random"}).json()
while True:
    st = requests.get(f"{API}/v1/jobs/{job['id']}", headers=H).json()
    if st["status"] in ("done", "failed"):
        break
    time.sleep(2)

v = np.load(io.BytesIO(requests.get(f"{API}/v1/jobs/{job['id']}/v.npy", headers=H).content))

エンドポイント

メソッド パス 内容
POST /v1/tests/adf ADF 検定
POST /v1/tests/kpss KPSS 検定
POST /v1/sim/gray-scott Gray-Scott のジョブを登録(202 を返す)
GET /v1/jobs/{id} ジョブの状態と結果の要約
GET /v1/jobs/{id}/v.png 結果の画像(v 場、viridis)
GET /v1/jobs/{id}/v.npy 結果の配列(float32, 形状 (n, n))
GET /v1/usage 直近 30 日の使用量と残高
GET /v1/pricing 現在の料金(キー不要)

ADF 検定 POST /v1/tests/adf

パラメータ 既定値 内容
series (必須) 数値の配列。10〜100,000 点
regression "c" 確定項。"n"(なし)/ "c"(定数)/ "ct"(定数+トレンド)/ "ctt"(+2次トレンド)
autolag "AIC" ラグの選び方。"AIC" / "BIC" / "t-stat" / null(maxlag をそのまま使う)
maxlag \(12(n/100)^{1/4}\) 最大ラグ

statsmodels の adfuller と同じ手順・同じ既定値です。検定の中身は ADF 検定の記事 を参照してください。

KPSS 検定 POST /v1/tests/kpss

パラメータ 既定値 内容
series (必須) 数値の配列
regression "c" "c"(水準定常)/ "ct"(トレンド定常)
nlags "auto" "auto"(Hobijn et al. 1998)/ "legacy" / 整数

Gray-Scott POST /v1/sim/gray-scott

\[ \partial_t u = D_u \nabla^2 u - u v^2 + F(1-u), \qquad \partial_t v = D_v \nabla^2 v + u v^2 - (F+k) v \]

パラメータ 既定値 範囲
n 256 16〜512(格子の一辺、周期境界)
steps 10000 1〜100000(ただし \(n^2 \times\) steps \(\le 512^2 \times 20000\))
F, k 0.035, 0.065 0〜0.2
Du, Dv 0.16, 0.08 0〜1
dt 1.0 \(dt \cdot \max(D_u, D_v) \le 0.25\)(陽的オイラー法の安定条件)
seed 乱数 同じ値で同じ結果を再現できる
init "center" "center"(中央に種)/ "random"(ランダムな位置に種)

エラー

エラーは次の形で返ります。

{"error": {"code": "invalid_argument", "message": "series の長さは 10〜100000"}}
HTTP code 意味
400 invalid_argument / invalid_json 入力の誤り(課金されません)
401 unauthorized キーがない・無効
402 insufficient_credit 残高不足
429 rate_limited / too_many_jobs 1 分あたり 60 回、または同時ジョブ 3 件の上限

無料デモ

キーなしで試せます(系列 500 点まで)。

規約など