Help us understand the problem. What is going on with this article?

BigQueryで統計量の計算をしてみよう

More than 3 years have passed since last update.

BigQueryにはUDFという、ユーザ定義関数を実行することができます
また、StandardSQLでは外部jsをインクルードできるようになりました
今回、jsの統計ライブラリであるjstatsを読み込んで、BigQueryで統計量の計算をすることにしました

手順

  1. jstat.jsをGoogle Cloud Storageにアップする
  2. 以下のクエリをBigQueryで実行する

twoSidedDifferenceOfProportions

jStat.fn.twoSidedDifferenceOfProportions(.5, 134, .51, 101);
=> 0.879357522092445
CREATE TEMPORARY FUNCTION twoSidedDifferenceOfProportions(p1 FLOAT64, n1 FLOAT64, p2 FLOAT64, n2 FLOAT64)
RETURNS FLOAT64
LANGUAGE js AS """
  return jStat.fn.twoSidedDifferenceOfProportions( p1, n1, p2, n2);
"""
OPTIONS (
  library="gs://#{project_name}/jstat.js"
);

SELECT
  twoSidedDifferenceOfProportions(0.5, 134, 0.51, 101)

=> 0.879357522092445

注意

以下のように最初FLOAT64の箇所をINT64としていて、数字が全く違うものが返ってきていました。
型はしっかり確認して利用しましょう。

CREATE TEMPORARY FUNCTION twoSidedDifferenceOfProportions(p1 FLOAT64, n1 INT64, p2 FLOAT64, n2 INT64)
RETURNS FLOAT64
LANGUAGE js AS """
  return jStat.fn.twoSidedDifferenceOfProportions( p1, n1, p2, n2);
"""
OPTIONS (
  library="gs://#{project_name}/jstat.js"
);

SELECT
  twoSidedDifferenceOfProportions(0.5, 134, 0.51, 101)CREATE TEMPORARY FUNCTION twoSidedDifferenceOfProportions(p1 FLOAT64, n1 INT64, p2 FLOAT64, n2 INT64)
RETURNS FLOAT64
LANGUAGE js AS """
  return jStat.fn.twoSidedDifferenceOfProportions( p1, n1, p2, n2);
"""
OPTIONS (
  library="gs://#{project_name}/jstat.js"
);

SELECT
  twoSidedDifferenceOfProportions(0.5, 134, 0.51, 101)

=> 0.0106513479995477
reikubonaga
MC DigitalのCTO。Ex-Wantedly Visitの開発チームのリーダ。 チームのメンバーやインターンに伝えたいことをついでにqiitaにも書いていこうと思っています。 MC Digitalはエンジニア絶賛募集中です!
https://www.mcdigital.jp/member/
wantedly
「シゴトでココロオドル」ためのビジネスSNS「Wantedly」の開発・運営をしています。
https://wantedlyinc.com/ja/presentations
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away