データベーススペシャリスト資格|2022年10月挑戦ログ 6月1日|SQL(文字列を扱う関数)|統計の基礎③(相対度数分布グラフ)

高度IT・基礎知識

この記事は「データベーススペシャリスト資格に興味はあるが、どのようなものか?どう学ぶのか?」という方向けに、具体的な内容と私自身の挑戦ログをお伝えする。学び中の方や、これから学ぼうとされる方の参考になれば幸いだ。

今回は「文字列を扱う関数」について書く。なお、SQL(データ分析)はあくまで目的を達成するための手段だ。例えば売り上げ増加を目的に、顧客の購入歴から筋の良い商品をSQLを使って分析するなどだ。このように「目的に沿ってデータを集め、整理、比較、分析、仮説検証する手法」が統計学であり、意味のあるデータ分析に欠かせない要素だ。よって目的を見失わないようにするため、複数回に分けて統計学の基礎をおさらいする。

※注意点として、SQLはDBMSによって作法が異なる。この記事はGoogle Big Queryに準拠するものであることをお含みおき願いたい。

SQL(文字列を扱う関数)

前回振り返り

  • SQLについて。これまで基礎(基本構文・グループ化・複数テーブル・仮想テーブル)を学び、実際に記述できるようになった。そこで応用としてSQL関数を少しづつ学んでいく。
  • 前回は「数値を扱う関数」に関して学んだ。今回は「文字列を扱う関数」について書く

文字列の連結

  • 文字列の連結にはconcat関数(引数としては、連結する文字数を「,」でつないで記述する。テーブルの列名も指定可能。固定文字列は「’」または「”」で囲む)
  • 語源は「concatinate(連結)」
  • たとえば、テーブルに含まれる氏名に「様」をつけるSQLは以下

文字列の連結(フィールドの値同士)

  • concat関数はフィールドの値同士の連結も可能。
  • また、文字列以外のフィールドはBig Queryが自動的に「文字列だとみなして」連結してくれる場合がある。
  • たとえば、web_logテーブルにある文字列型のcidフィールドと、数値型のsession_countフィールドを、間に「-」を挟んでつなげるなど。SQLは以下のとおり。

文字列の一部を取り出す

  • 文字列の一部取得はsubstr関数。引数には「対象文字列,位置,文字数」を指定する。
  • 語源は「substring(部分文字列)」
  • 位置はマイナスで入れると、右から数えた場所になる。文字数は省略すると末尾までの文字を取得する。SQLは以下のとおり。
  • なお、取得開始位置が左端の場合はleft関数が、右端の場合はright関数が使える。

特定文字列の出現位置を取得する

  • 特定文字列の位置取得はinstr関数。引数には「対象文字列,検索文字列,検索開始位置,出現回数」を指定する。後ろ2つはオプション。見つからなかった場合は「0」が返る。
  • 語源は(おそらく)「in strings(文字列の中)」
  • 以下はサンプル。f1は最初の”晴”が4文字目から出てくるので「4」が返る。
  • f2は検索開始位置を5文字目からにしており、f3は出現回数2回目からとしたので、次に”晴”が出てくる「9」が返る。

substrとinstr関数の組み合わせ

  • たとえば、urlの第一ディレクトリ名のみ抽出、という使い方ができる。
  • 以下はSQL。instr関数で第一ディレクトリの開始・修了位置を取り、それをsubstr関数の引数として用いている。

それ以外の関数

  • instrの簡易版がstrpos関数。引数では対象文字列と検索文字列しか指定しない。語源は(おそらく)「string position(文字列の位置)」
  • 文字列の置き換えがreplace関数。引数は「対象文字列,検索文字列,置換後の文字列」。語源は「replace(交換)」
  • 文字列の長さ取得がlength関数。語源は「length(長さ)」。replaceとlength関数の組み合わせで、特定文字がどのくらい含まれるか調査できる。以下はSQL。

統計の基礎③(相対度数分布グラフ)

統計を学ぶ理由と注意点(再掲)

  • 人間の判断はシンプルに言えば「快か不快か」と「短期は本能、長期は理性」だと思う。たとえば「ドーナツを食べたい(本能的な短期の快)が、太って病気になるのはイヤなので我慢する(理性的な長期の快)」などだ。
  • そしてこの「太ると病気になりやすい」などの判断のピースについて、「本当にそうなのか」を明らかにするため、先人の知恵とデータを参考にできるのが統計の強みだと思う。ただし、統計は数学であり、倫理は人が補完する必要があるから、「統計で何ができるか」の学びは重要だと考える。

統計による未来予測(一部再掲)

  • データをあつめ、分布をグラフにする。たとえばクラス40人の身長を測り、横軸が階級(何センチ台か)、縦軸が度数(何人いるか)のグラフを作る。これが正規分布(釣鐘状)だったとする。
  • 分布から平均と分散をもとめる。平均はグラフの”つり合いが取れる点”。分散は”平均から見たデータのばらけ具合”。平均と分散が分かれば、理想のひな形(平均0、分散1の正規分布)に置換できる。正規分布は重ね合わせしても分布の形が保存されるし、研究されて面積も一覧化されてるのでたいへん便利。
  • 検定や推定に用いる。例えば「クラス40人の身長の平均が164センチ、分散が36センチだったとして、身長170センチの人はグラフのどの辺りに属するか?」であったり「クラスA40人とクラスB40人の身長に統計上有意な差はあるか?」などは正規分布を標準ツールとして使うことで求められる

相対度数分布グラフ

  • 書籍「意味がわかる統計学」第1章の独自の概念。確率変数を飛ばして、検定・推定のエッセンスを理解できる。「とにかく早く検定・推定で何をしているのか概念だけ知りたい」場合に便利
  • 考え方はとてもシンプル。まず横軸に階級(区切り)、縦軸に度数(各々の値)のグラフを作る。これをヒストグラムと言う。
  • 次に、度数の総計が1になるよう全体を圧縮する。これが相対度数分布グラフ。
  • たとえば20人のテスト点数が「43,47,52,52,54,61,67,67,68,69,70,71,71,73,76,78,82,84,84,91」だったとする。
  • このとき、ヒストグラムは以下のとおり。
  • そして、相対度数分布グラフを作ると、以下の通りとなる。
  • なぜ「度数の合計が1」になるよう圧縮するのか。一旦理由は置いておく。ただ一応補足しておくと、「統計は本来確率論で、ある集団からデータを抜き出したとき、それがどのくらいの確率で、どのくらいの値かを計算するものであり、確率の総計は1だから」となる。

考察

  • SQLについて。応用としてSQL関数を少しづつ学んでいく。今回は「文字列を扱う関数(結合、抜き出し、位置情報取得、入れ替え、長さ取得)」に関して学んだ。
  • 考察。書籍「意味がわかる統計学」を元に「検定・推定が何をしているか」を学び直そうとしている。今回は本書籍独自の概念である「相対度数分布グラフ」を学んだ。確率論や難しい数式を用いず、イメージ図で本質を学べるのは大変ありがたい。

考察のシンプル化と英訳(練習中)

  • the introductory book gives me simple learning with graphs. it does not use difficult formula and probability theory.
  • (入門書は、グラフを用いてシンプルな学びを私に与えてくれます。難しい公式や確率論は用いません)

参考書籍

  • 集中演習 SQL入門/木田和廣/株式会社インプレス
  • 意味がわかる統計学/石井俊全/ベレ出版

コメント

タイトルとURLをコピーしました