LogoMark.png

データサイエンス/09 のバックアップの現在との差分(No.3)


#author("2023-08-17T15:50:32+09:00","default:inoue.ko","inoue.ko")
*第8回 データビジュアライゼーション1
[[データサイエンス/2023]]
#author("2023-11-20T15:32:32+09:00","default:inoue.ko","inoue.ko")
*第9回 推測統計と仮説検定
[[データサイエンス/2023]]|[[受講生一覧>https://design.kyusan-u.ac.jp/socialdesign/?%E3%83%87%E3%83%BC%E3%82%BF%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%82%B9]]|[[汎用シート>https://docs.google.com/spreadsheets/d/1g-6TyzeQg3md55l9SGnqN-USBsoCNYOwSDDUOKVBJu8/edit?usp=sharing]]
~

***CONTENTS
#contents2_1
~
~
**データビジュアライゼーション
データビジュアライゼーション(Data Visualization)とは、物事の関係性を視覚的に捉えられるように、データを画像・グラフ・図表などに変換することを言います。その目的はデータから価値や知恵を生み出すことにあります。

''Data'' → ''Information''(構造化)→ ''Knowledge''(知見)→ ''Wisdom''(知恵)
**記述統計と推測統計
統計には、大きく以下の2つのタイプがあります。
-''記述統計'':得られたデータのみに注目し、その性質を知る
例:3年A組と3年B組の成績を比較する > 全数調査
-''推測統計'':''標本(サンプル)''から、発生元となる''母集団''の性質を推測する
例:高血圧の人を対象に新薬の効果を検証する > 標本調査

一般に、集団の性質を知るために全てのデータを取ることは不可能であるため、無作為に抽出した「標本から全体を推測する」ことが重要になります。
~

***様々なグラフ
-[[ヒストグラム>GoogleImage:ヒストグラム]]:縦軸に度数、横軸に項目を対応させ、事項間の度数を比較するもの。度数分布図、柱状グラフともいう。 
-[[ボックスプロット(箱ひげ図)>GoogleImage:箱ひげ図]]:データのばらつきを、箱(box)と、その両側に出たひげ(whisker)で表現する図。特に品質管理でよく用いられる。
-[[散布図>GoogleImage:散布図]]:縦軸、横軸に変数を対応させて、データを点でプロットしたもの
-[[折れ線グラフ>GoogleImage:折れ線グラフ]]:時系列の推移を表すもの
-[[棒グラフ>GoogleImage:棒グラフ]]:項目間の値を比較するもの
-[[円グラフ>GoogleImage:円グラフ]]:円図形を扇形に分割し、事項の構成比率を表すもの
-[[ヒートマップ>GoogleImage:ヒートマップ]]:2次元データの個々の値を色や濃淡として表現したもの
~

***Topics
#image(https://upload.wikimedia.org/wikipedia/commons/thumb/1/17/Nightingale-mortality.jpg/1024px-Nightingale-mortality.jpg,right,30%)
-__[[ナイチンゲールの鶏頭図>GoogleImage:ナイチンゲール 鶏頭図]]__(1858)
クリミア戦争における月別の死因を可視化したもの。赤色が負傷、青が病気、黒がその他を意味していて、グラフからは負傷による死亡よりも病気による死亡が圧倒的に多いことがわかります。
&scale(75){出典:https://commons.wikimedia.org/wiki/File:Nightingale-mortality.jpg};
~
**推測統計
母集団の様子(平均や散らばり具合)を把握するために必要なアンケートの件数とはどれくらいなのでしょうか。母集団とランダムに抽出した標本(サンプル)とでは結果が等しくはならず、数%の誤差があるのが普通です。この誤差を''許容誤差''と言って、これをどのくらいに設定するかで、アンケート調査の信頼性が変わります。許容誤差5%、信頼度95%で、統計上は十分意味があると言われています。

-__[[データインク比>GoogleImage:Data-ink ratio]]__
エドワード・タフテによる「良いグラフィック」の指標で、「グラフィック全体の印刷にかかったインク量のうち、データを伝えるために用いられたインク量の比率が 1.0 に近いほど良い・・と考えられます。
 Data-ink ratio = Data-ink / total ink used to print the graphic
&scale(75){Edward Tufte, 1992, The Visual Display of Quantitative Information };
~
~
で、アンケート調査は何件ぐらい必要かと言うと、母集団を10万人と想定して許容誤差を5%とした場合''400件'' がひとつの目安とされています。ちなみに、許容誤差を3%にしたい場合は約1000件、1%にしたいなら約10000件のサンプルが必要です。

**Python によるビジュアライゼーション
Pythonを用いたデータビジュアライゼーションには、様々な関連ライブラリーのインポート、データの読み込み、各種メソッドの活用が前提となります。以下、具体的なコードとともに概要を説明します。
~
参考:[[GoogleImage:アンケート サンプル数 早見表]]

***基本データ処理用のライブラリ
//-[[numpy>https://numpy.org/]]|数値計算
// import numpy as np
//
-[[pandas>Pandas]]|データフレームの活用
 import pandas as pd
//
//-[[janome>https://mocobeta.github.io/janome/]]|日本語の形態素解析器
// import janome
~
しかし、現実的には 400件ものデータを取ることは困難なことが多く、もっと少ないデータ数で、母集団の平均値を推定できないか・・ということになります。ここで登場するのが統計的な推定です。

統計的な推定には、点推定と区間推定があります。

***ビジュアライゼーション用のライブラリ
-[[matplotlib>https://matplotlib.org/]]|グラフ描画の基本機能の提供
 import matplotlib.pyplot as plt

-[[seaborn>https://seaborn.pydata.org/]]|matplotlib をベースにした美麗な可視化
 import seaborn as sns

-[[folium>https://python-visualization.github.io/folium/]]|地図・位置情報の可視化
 import folium
 from folium.plugins import HeatMap

-[[plotly>https://plotly.com/python/]]|動的グラフ作成
 import plotly.graph_objects as go
 import plotly.express as px

-[[wordcloud>https://amueller.github.io/word_cloud/]]|ワードクラウドの描画

-[[pillow>https://pillow.readthedocs.io/]]|画像処理

>__[[推測統計>Statistics/Inferential]]__
~
~

**Pythonによる統計グラフ
はじめに matplotlib と pandas の連携による基本的なグラフ描画を体験します。
~
**仮説検定
仮説検定とは、母集団分布の母数に関する仮説を標本から検証する統計学的方法の一つで、例えば「従来製品の電力消費量の平均値と、新製品の電力消費量の平均値には有意な差がある」といった仮説を検証する際に用いられます。

***データの準備
統計グラフの作成には、対象となるデータを''データフレーム''として読み込む必要があります(すでに前回までに確認済み)。
 df = pd.read_csv( '/path/to/xxxxx.csv' )
~
詳細について、以下のページで概説します。
>__[[仮説検定>Statistics/HypothesisTesting]]__

***ヒストグラム
#image(Pandas/hist.png,right,30%)
ヒストグラム(柱状グラフ、度数分布図)は、横軸に階級、縦軸に度数をとった統計グラフで、データの分布状況を可視化するために用いられます。

データフレームからヒストグラムを生成するコードは非常に簡単です。
 df.hist( ) 全項目一挙表示
 df[ 'XXX' ] .hist(  ) 特定カラムの表示
&small(df はデータフレーム変数の例です。);
//-__[[t検定>Statistics/t-test]]__
//-__[[Statistics/ANOVA]]__
//-__[[Statistics/χ-Squared-test]]__
~
~

***ボックスプロット
#image(Pandas/box.png,right,30%)
ボックスプロット(箱ひげ図)は、データのばらつきを可視化する統計グラフで、箱(box)と、その両側に出たひげ(whisker)で表現されることからその名が付けられています。

一般に以下の五数が要約(five-number summary)されて表示されます。
-最小値(minimum)
-第1四分位点(lower quartile)
-中央値(第2四分位点、median)
-第3四分位点(upper quartile)
-最大値(maximum)
**演習9|__[[t検定>Statistics/t-test]]__
今回の演習では、検定の定番とも言える __[[t検定>Statistics/t-test]]__ の事例を紹介します。2つのグループ間の平均値に差があるか否かについて、「対応なし」と「対応あり」の2つのパターンを試します。

以下のコードは、対象カラム(XXX)をグループ(AAA)別に表示します。
 df.boxplot( column='XXX' , by='AAA' )
~
汎用性の高い事例となるように、CSVデータを読み込んでから、検定に使えるデータに加工するという手順を踏んでいます。

***散布図
#image(Pandas/scatter.png,right,30%)
散布図(scatter plot)は、縦軸、横軸に2つの量的データ項目を対応させて、各レコードのデータを点でプロットしたものです。項目間の相関の有無が可視化されます。
このサンプルを参考に、自分でも様々なデータを使って検定を行なってみてください。 異なる条件が与えられた2つのグループ間に「差がある」ということを統計的に言えるだけでも、学術論文が書けます。

以下のコードは、x軸とy軸にカラム項目を指定して表示します。
 df.plot.scatter( x='XXX', y='YYY' )
~

***折れ線グラフ・棒グラフ・円グラフ
これらのグラフは項目間の推移や比較を見るために使います。数万件もある全レコードを表示しても視覚的に読み取ることはできないので、グラフにしたい内容によって、事前に「データの平均値を出す」、「クロス集計する」といった処理を行った後、それを新たなデータフレームとしてグラフの表示に利用するのが一般的です(以下、棒グラフの事例です)。
***サンプルデータの事前確認
この演習では、以下のデータをサンプルとして利用します。GitHubから直接読み込むので、ダウンロードの必要はありません。

 # 性別ごとに国語・英語・数学の平均値を算出
 df_mean = df.groupby( 'Gender' , as_index=False ).mean( ) 
 df_mean
||Gender|Japanese|English|Mathematics|h
|0|F|62.350000|58.475000|39.800000|
|1|M|56.420455|41.142045|39.539773|
-iris.csv
https://raw.githubusercontent.com/koichi-inoue/DataScience/main/iris.csv
Irisは、データサイエンスの分野で最も有名なデータサンプルのひとつです。Irisは日本語で「アヤメ」。このデータセットには、setosa、versicolor、virginicaという3種の花に着目して、がく片(sepal)の長さ・幅、および花弁(petal)の長さ・幅、それぞれ 50個の測定結果が含まれています。   
参考:[[GoogleImage:iris setosa virginica versicolor]]

#image(Pandas/bar.png,right,30%)
生成された df_mean を使うと、簡単に積み重ね棒グラフができます。
 df_mean.plot.bar( stacked=True )
&small(stacked=True は、積み重ねを有効にする・・という意味です。);

-sleep.csv
https://raw.githubusercontent.com/koichi-inoue/DataScience/main/sleep.csv
薬剤1と薬剤2の2種類の睡眠薬を10人の被験者に投与した際の、睡眠時間の差分を記録したデータで、2種類の薬剤を同一被験者に投与していることから、その値には対応があるといえます。
~
~

**演習8|統計グラフ
CSVデータから統計量を視覚化するサンプルです。matplotlib と連携した pandas のグラフ描画機能を使って、様々なグラフの描画を体験します。
~

***ノートブックの新規作成
-__[[Google Colaboratory>https://colab.research.google.com]]__ でノートブックを新規作成
-Untitled0.ipynb というファイル名を変更 > StatisticalGraphics.ipynb
-Untitled0.ipynb というファイル名を変更 > t-test.ipynb
~

***サンプルデータ
Tips のデータをサンプルとして利用します。
直接読み込むので、ダウンロードの必要はありません。
https://github.com/mwaskom/seaborn-data/blob/master/tips.csv
//https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv
~

***サンプルコード
JupyterNotebook形式(.ipynb)でプログラムを提供します。
https://github.com/koichi-inoue/DataScience/blob/main/StatisticalGraph01.ipynb
-''JupyterNotebook形式(.ipynb)でサンプルプログラムを提供します。''
&fontawesome(far fa-hand-point-right); __[[t_test.ipynb>https://github.com/koichi-inoue/DataScience/blob/main/t_test.ipynb]]__(GitHub に置いています)
プログラムの解説付きのノートになっているので、このページの上から順に、テキストとコードを自分のノートに書く、あるいは、コピー&ペーストして、お試しください。
 In [ ]:コード部分です。これを自分のノート のコードブロックに書く
 Out [ ]:実行結果です。コードを実行すると表示されます。
 説明文:必要に応じて、自分自身のノートとして記載して下さい。

-t検定には、統計ライブラリ__[[scipy>https://scipy.org/]]__ の、以下の2つの関数を使っています。
--scipy.stats.ttest_ind 対応のない2標本の t検定
--scipy.stats.ttest_rel 対応のある2標本の t検定

~

***学科サイトにリンク掲載
ノートを、学科サイトの個人ページからリンクして下さい。以下、手順です。

-1. 自分のノートを開いた状態で、右上の「共有」をクリック

-2. 共有設定を変更して、以下のように表示される状態にします。
 このリンクを知っているインターネット上の全員が閲覧できます。

-3. 「リンクをコピー」をクリックして、そのアドレスを、以下の形式で、学科サイトの「Jupyter Notebooks」の部分に掲載して下さい。
 -[[統計グラフ>https://colab.research.go・・=sharing]]
 -[[Pythonによる仮説検定>https://colab.research.go・・=sharing]]

-4. 以下のようになればOKです。
https://design.kyusan-u.ac.jp/socialdesign/?JohnSmith/DataScience
~
~

**演習9+(任意)
&color(blue){こちらを「演習9」として学科サイトに掲載・・でもOKです。};

**演習8|プログラムの解説
***ライブラリーの読み込み
冒頭で、グラフ描画用のライブラリー''matplotlib''とデータ解析用のライブラリー ''pandas''を読み込んでいます。
 # matplotlib パッケージ から pyplot モジュールを plt として import
 import matplotlib.pyplot as plt
 
 # pandasライブラリの読み込み
 import pandas as pd
以下、理系・文系(性別カテゴリあり)、約500名分の学生のGPAと出席率のダミーデータがあります。これを使って、理系と文系で平均値に差があるか、あるいは男女で差があるかについて検定してみて下さい。
&small(データサイズが大きいので p値は小さくなるので、ほぼ「有意差あり」となりますが・・);
~

***ヒストグラム・ボックスプロット・散布図
-ヒストグラム(度数分布) hist
以下の1行で、データフレームに含まれる「量的データ」すべての項目について''度数分布''が描画されます。
 df.hist()
以下の一行で、グラフを表示します。この1行は書かなくても、df.hist が自動的に matplotlib を呼んで表示まで行ってくれますが、後のコードに合わせて、表示を明示的に行っています。
 plt.show()

-ボックスプロット(箱ひげ図) boxplot
以下の一行で曜日ごとのチップの額に関するボックスプロットが表示されます。
 df.boxplot( column = 'tip', by = 'day' , figsize = ( 9, 6 ) )
figsize はノート上に表示されるグラフの幅と高さを指定しています。

-散布図 plot.scatter
以下の一行で「総支払い額」と「チップ」の散布図が表示されます。
 df.plot.scatter( x = 'total_bill' , y = 'tip' , figsize = ( 9, 6 ) , alpha = 0.7 )
alpha は点をプロットする際の「不透明度」を意味します。
~

***棒グラフ・折れ線グラフ・円グラフ
-事前のデータ処理
折れ線グラフ、棒グラフ、円グラフでは、全てのデータを可視化しても読み取れません。以下、グラフ用に「曜日別の平均」を算出して新たなデータフレームを作成しています。
 df2 = df.groupby( 'day' ).mean()
 df2

-indexの並べ替え
データフレームを処理すると、項目がアルファベット順に出力されます。そのままだと、Fri, Sat, Sun, Thur と、違和感のある並びになるので、reindex というメソッドを使ってデータを Thur, Fri, Sat, Sun の順に並べ替えています。
 df3 = df2.reindex( index = [ 'Thur', 'Fri', 'Sat' , 'Sun' ] )
 df3

-折れ線グラフ plot
以下の一行で量的データ項目の折れ線グラフが表示されます。この例では、曜日の時間的「推移」として読むことができます。
 df3.plot( figsize = ( 9, 6 ) )

-棒グラフ plot.bar
以下の一行で量的データ項目の棒グラフが表示されます。
 df3.plot.bar( figsize = ( 9 , 6 ) )

-積み重ね棒グラフ
以下の一行で総支払額とチップの積み重ね棒グラフが表示されます。
 df3[ ['total_bill' , 'tip'] ].plot.bar( stacked=True , figsize = ( 9 , 6 ) )

-円グラフ plot.pie
以下の一行で量的データ項目の曜日構成比が円グラフとして表示されます。
 df3.plot.pie( subplots = True , figsize = (12,6) )
~
~

#hr
CENTER:'''以下は、seaborn というライブラリを活用した事例です'''
'''参考情報なので、取り組みは任意です。'''
#hr
~
~

**Pythonによる統計グラフ+
seaborn というライブラリを使った応用的なグラフ描画を体験します。
~

***seabornについて
seabornは Python の可視化ライブラリで、matplotlib が内部で動いています。

-公式サイト:https://seaborn.pydata.org/
-seabornの長所
--美麗なグラフを描くことができる
--matplotlibと比較すると少ないコードで描画できる
-seabornの利用には、Pythonのバージョンが3.6以上であることが必要
&small(Google Colab は問題ありません。);

~

***ヒストグラム
-量的変数のヒストグラム
 sns.displot( )
 sns.histplot( )
&color(red){Web検索では dis ''t'' plot が表示されることが多いようですが、dis ''t'' plot は将来削除される予定で、代わりに以下の関数を利用することが推奨されています。};
https://seaborn.pydata.org/generated/seaborn.distplot.html
--displot( )
 sns.displot( df['total_bill'] ,  bins=20 , color='#0033AA' )
--histplot( )
例えば以下のように書くと、曜日ごとのデータを色違いに重ねてくれます。
 sns.histplot( data = df , x= 'total_bill' , bins=20 , hue = 'day'  )
~

-質的変数のヒストグラム
 sns.countplot( )
~

***ボックスプロット
 sns.boxplot( )
~

***散布図
質的変数の違いを色・形で区別、また量的変数をドットのサイズで表現可能
 sns.scatterplot(  )
~

***散布図行列
相関行列同様に、量的項目間の相関を一括表示
 sns.pairplot( )
~

***ヒートマップ
2次元の表の値を色の差( 青:小 ←→ 赤:大 など)で表現
 sns.heatmap( )
~

***棒グラフ・円グラフ等
seaborn ライブラリーによる棒グラフの表示は煩雑、また seaborn には円グラフを描く機能が実装されていないため、ここでは省略します。
~
~


**演習8+|統計グラフ+

***ノートブックの新規作成
-__[[Google Colaboratory>https://colab.research.google.com]]__ でノートブックを新規作成
-Untitled0.ipynb というファイル名を変更 > StatisticalGraphicsPlus.ipynb
~

***サンプルデータ
いずれも https アクセスでプログラム内で直接読み込むので、ダウンロードする必要はありません。
-データ確認用アドレス
https://github.com/koichi-inoue/DataScience/blob/main/SampleForT-test.csv
-データ読み込み用アドレス(実際のCSVファイルへのリンク)
https://raw.githubusercontent.com/koichi-inoue/DataScience/main/SampleForT-test.csv
~
-サンプル1:tips.csv(前回同様)
レストランにおける総支払額、チップの額、テーブルサイズ等
https://github.com/mwaskom/seaborn-data/blob/master/tips.csv

-サンプル2:covid-19.csv(ヒートマップ作成サンプルとして使用)
covid-19 陽性者数(都道府県別・月別)
https://github.com/koichi-inoue/DataScience/blob/main/covid-19.csv
オリジナルは以下、厚生労働省が公開している[[オープンデータ>OpenData]]のページで、ページの先頭にある「新規陽性者数の推移(日別)」を変形したものです。
https://www.mhlw.go.jp/stf/covid-19/open-data.html
~

***サンプルコード
JupyterNotebook形式(.ipynb)でプログラムを提供します。
https://github.com/koichi-inoue/DataScience/blob/main/StatisticalGraph02.ipynb
~
-''JupyterNotebook形式(.ipynb)でサンプルプログラムを提供します。''
&fontawesome(far fa-hand-point-right); __[[t_test_sample.ipynb>https://github.com/koichi-inoue/DataScience/blob/main/t_test_sample.ipynb]]__

***学科サイトにリンク掲載
ノートを、学科サイトの個人ページからリンクして下さい。以下、手順です。

-1. 自分のノートを開いた状態で、右上の「共有」をクリック

-2. 共有設定を変更して、以下のように表示される状態にします。
 このリンクを知っているインターネット上の全員が閲覧できます。

-3. 「リンクをコピー」をクリックして、そのアドレスを、以下の形式で、学科サイトの「Jupyter Notebooks」の部分に掲載して下さい。
 -[[統計グラフ+>https://colab.research.go・・=sharing]]

-4. 以下のようになればOKです。
https://design.kyusan-u.ac.jp/socialdesign/?JohnSmith/DataScience
~
~

**演習8+|プログラムの解説
***ライブラリーの読み込み
冒頭で、グラフ描画用のライブラリ matplotlib、seaborn とデータ解析用のライブラリ pandasを読み込んでいます。

 # matplotlib パッケージ から pyplot モジュールを plt として import
 import matplotlib.pyplot as plt
  
 # seaborn ライブラリを sns として読み込み
 import seaborn as sns
 # seabornの機能を有効化
 sns.set()
 
 # pandasライブラリの読み込み
 import pandas as pd
**APPENDIX
***関連リンク
-対応のない2標本t検定(統計Web)
https://bellcurve.jp/statistics/course/9446.html
-対応のある2標本t検定(統計Web)
https://bellcurve.jp/statistics/course/9453.html
~

***ヒストグラム
-量的変数(総支払額)のヒストグラム
 sns.displot( )
--df['total_bill']:対象となるカラム項目
--bins=12:階級の分割数
--color='#0033AA':グラフの色
--height=6 , aspect=2:グラフのサイズ指定(高さとアスペクト比)
&small(アスペクト比は 幅/高さ);
--kde=True :確率密度関数の曲線を重ねて表示

-質的変数(曜日別)のカウントをヒストグラム化
 sns.countplot( )
--data = df:データとして データフレーム df を使用
--x = 'smoker':喫煙者か非喫煙者で分布を比較
--order = ['Yes', 'No'] :喫煙者、非喫煙者の順に表示
--hue = 'day':曜日を色で区別
~

***ボックスプロット
 sns.boxplot( )
--data = df:データとして データフレーム df を使用
--x = 'day':横軸は「曜日」
--y = 'total_bill':縦軸は「総支払額」
--order = ['Thur','Fri','Sat','Sun']:木金土日の順に表示
~

***散布図
-一般的な散布図
 sns.scatterplot(  )
--data = df:データとして データフレーム df を使用
--x = 'total_bill':横軸に「総支払額」
--y = 'tip':縦軸に「チップの額」

-質的変数の違いを色・形で区別
--hue = 'day':曜日の違いを色で区別
--style = 'time':ディナーを◯、ランチを × でプロット
--s = 100:ドットのサイズ指定

-量的変数をドットのサイズで表現(バブルチャート)
--size = 'size':テーブルサイズ(人数)をドットのサイズに反映
--sizes = (100,1000) :ドットのサイズは 100 〜 1000 に割り当て
--alpha = 0.5:不透明度 0.5
~

***散布図行列
相関行列同様に、量的項目間の相関を一括表示
 sns.pairplot( )
--data = df:データとして データフレーム df を使用
--hue = 'day':曜日の違いを色で区別
--height = 4 , aspect = 1 :グラフのサイズ指定(高さとアスペクト比)
&small(アスペクト比は 幅/高さ);
~

***ヒートマップ
このサンプルでは、covid-19 の陽性者数を「横軸:年月、縦軸:都道府県」というかたちで2次元の表にしたデータ(df2)を利用しています。
 sns.heatmap( )
--df2:データフレーム df2 を使用
--linewidths=.5:ヒートマップの各データ間に線を描く
--cmap = "coolwarm":ヒートマップの色の組み合わせ(青 - 赤)
--fmt="d":表示フォーマット 10進数
--annot = True:セルに値を出力
--robust = True:極端に大きな値や小さい値の影響を受けないように処理
&small(ロバスト推定とは「外れ値に影響されにくい推定」を意味します。);
~

***ファイルの保存について
GoogleColab のファイル操作のためのライブラリを読み込むことで、描画されたグラフを画像ファイルとしてダウンロード保存することができます。
-ライブラリの読み込み
 from google.colab import files

-matplotlib の機能を使って画像に名前を付けて保存(内部的に保存されます)
 plt.savefig('heatmap.png')

-GoogleColab の機能を使ってファイルをダウンロード
 files.download('heatmap.png')

~
~


**APPENDIX

***数理グラフ
数式等を用いたグラフ表示のサンプルです。時間に余裕のある方のみお試しください。取り組みは任意です。

https://github.com/koichi-inoue/DataScience/blob/main/Plotting.ipynb

~
~