【Python演算処理】NetworkXライブラリを導入する。

R時代には**iGraphパッケージ**を使ってました。
[Rとigraphを使ったネットワーク解析と可視化](http://www.nemotos.net/igraph-tutorial/NetSciX_2016_Workshop_ja.html)

pythonでは**NetworkXライブラリ**を使う様です。早速、自分のMacintoshにインストールしてみました。
[【図解】Python NetworkXの使い方 | ネットワーク分析・可視化](https://e-tec-memo.herokuapp.com/article/174/)
[【Python】NetworkX 2.0の基礎的な使い方まとめ](https://qiita.com/kzm4269/items/081ff2fdb8a6b0a6112f)
[[python] Macにpygraphvizをインストールする](https://e-tec-memo.herokuapp.com/article/174/)

とりあえず以下の投稿の図示の差し替えに挑戦したいと思います。
[【数理考古学】とある実数列の規定例③オイラーの等式e^πi=-1が意味するもの？](https://qiita.com/ochimusha01/items/04ffa772d548a6b64310)

#０次元(<font color=blue>Zero Dimension</font>)
(それ自体は観測対象となり得ない)**観測原点**(Observation Origin)$0$と**観測限界およびその向こう側**(Observation Limit)$\infty$の間に「<font color=red>何もない</font>」状態から出発する。**群論**(Group Theory)でいう**空環概念**(Empty/Nullary Ring Concept)に対応し、その**元**(Element)は空となる。
[【初心者向け】群論概念②空環から整数環へ。](https://qiita.com/ochimusha01/items/da766832c87a604bcb8a)

>**空環概念**(Empty/Nullary Ring Concept)は「**空和概念**(Empty/Nullary Sum Concept)」の規約と「**空積概念**(Empty/Nullary Product Concept)」の規約の統合結果である。

①ここでいう「**空和概念**(Empty/Nullary Sum Concept)**の規約**」とは、**群論**(Group Theory)上における、**空集合**(Empty/Nullary Set)$\emptyset_n(n=0)=()$について「**0個の因子を足し合わせた演算結果集合**(Operation Result Set)**で、加法単位元**(Additive Identity)0**に等しい**(():=0)」とする規約をいう。

* **二項演算**(Binary Operation)のうち、**加減算**(Addition and Subtraction)すなわち**加法単位元**(Additive Identity)$0+Α+Β(Α+(-Β))$においては任意の元(Any Element)$Α_n(n=0)()=Β_n(n=0)()=Γ_n(n=0)()=0$なので**結合則**(Associative Law)0+(Α+Β)+C+…=0+Α+(Β+C)+…も**交換則**(Commutative Law)0+Α+Β+…=0+Β+Α+…も成立し、その演算結果は閉じている(演算の都度0=()に戻る)。

②ここでいう「**空積概念**(Empty/Nullary Sum Concept)**の規約**」とは、**群論**(Group Theory)における、**空集合概念**(Empty/Nullary Set)$\emptyset _n(n=0)=()$について「**0個の因子を掛け合わせた演算結果集合**(Operation Result Set)**で、乗法単位元**(Multiplicative Identity)1**に等しい**(():=1)」とする規約をいう。

* **二項演算**(Binary Operation)のうち、**乗除算**(Multiplying and Dividing)すなわち**乗法単位元**(Multiplicative Identity)$1×Α×Β(Α×(1/Β))$においては任意の元(Any Element)$Α_n(n=0)()=Β_n(n=0)()=Γ_n(n=0)()=1$となるので**結合則**(Associative Law)1×(Α×Β)×C+…=1×Α×(Β×C)×…も交換則(Commutative Law)1×Α×Β×…=1×Β×Α×…も成立し、その演算結果は閉じている(演算の都度1=()に戻る)。
* **二項演算**(Binary Operation)のうち、**冪算**(Exponentiation)それ自体こそ分配法則や交換法則を満たさないものの、その計算範囲自体は上掲の演算に内包され、自明の理として演算結果も同じ範囲で閉じている($…A^2=A×A,A^2=A,A^0=\frac{A}{A}=1,A^-1=\frac{1}{A},A^-2=\frac{1}{A×A},…・$)。

③この時点ではあくまで**空集合**$\emptyset _n(n=0)()=(加減算における単位元)0=(乗除算における単位元)1$と規約されるだけで$\emptyset _n(n=2)=(0,1)$が成立する訳ではない点に注意されたい。

* 実際、**単元集合**(Singleton)/**単位集合**(Unit Set)$Α_n(n=1)=(0)$及び$Β_n(n=1)=(1)$、さらには二つを合算した集合$Γ_n(n=2)=(0,1)$全てが**空環**/**空群**$\emptyset(n=0)=()$と異なりそれ自体は群も環も構成しない。

まるで禅問答の様ですが、この概念を幾何学的イメージに置き換えたのが以下。**有向グラフ**(Directed graph)で表すと「**観測者側からの観測対象に対する一方的観察**」と図示される点が重要。 

###空積概念(<font color=blue>Empty/Nullary Sum Concept</font>)

* **観測限界**を点と置いた場合、(0~$\infty$の範囲に渡る)**観測原点**との距離$x$は、何倍にしても何分の1にしても値は変わらない。
* ただし例外的に$\frac{x}{x}=1$となり、これが**乗法単位元**(Multiplicative Identity)の概念の出発点になる。

![tmpja7jjltg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/59b30270-549c-bc34-c297-46af8a8826e5.png)

```python
import networkx as nx

G = nx.DiGraph()
G.add_edge("Observation Origin(0)","Observation Limit(∞)")
nx.nx_agraph.view_pygraphviz(G, prog='fdp') 
```
###空和概念(<font color=blue>Empty/Nullary Sum Concept</font>)

* **観測限界**を(0~$\infty$の範囲に渡る)**観測原点**との距離$x$を半径とする**円弧**/**球面**と置いた場合、それをどんなに足し合わせても値は変わらない。
* ただし例外的に$x-x=0$となり、これが**加法単位元**(Additive Identity Identity)の概念の出発点になる。

![tmpog2lnpsb.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/13e592de-0d0e-6217-525d-d59f5c6f65c7.png)

```python
import networkx as nx

G = nx.DiGraph()
G.add_edge("Origin(0)","Limit(01=∞)")
G.add_edge("Origin(0)","Limit(02=∞)")
G.add_edge("Origin(0)","Limit(03=∞)")
G.add_edge("Origin(0)","Limit(04=∞)")
G.add_edge("Origin(0)","Limit(05=∞)")
G.add_edge("Origin(0)","Limit(06=∞)")
G.add_edge("Origin(0)","Limit(07=∞)")
G.add_edge("Origin(0)","Limit(08=∞)")
G.add_edge("Origin(0)","Limit(09=∞)")
G.add_edge("Origin(0)","Limit(10=∞)")
nx.nx_agraph.view_pygraphviz(G, prog='fdp') 
```
* この状態はある意味、統計学における「<font color=red>統計対象に値しない</font>」**名義尺度**(Nominal scale, Stanley Smith Stevens,1946年)、あるいは仮説検定において棄却される**帰無仮説**、すなわち「**ここで証明したい事は証明不可能である**」とする論拠に対応する。まさしく「(<font color=blue>数理処理可能な有意味水準を超えるデータは</font>)<font color=red>存在しない</font>」状態の数理化という訳である。<br>[確率変数とは](https://bellcurve.jp/statistics/blog/14006.html)<br>[確率変数の尺度](https://bellcurve.jp/statistics/course/1562.html)<br>[帰無仮説
(null hypothesis)](https://bellcurve.jp/statistics/glossary/899.html)

#0.5次元(<font color=blue>0.5 Dimension</font>)

次元抽出や中心割り出しが可能そうな有望な**観測結果集合**(Observation Result Set)が得られて初めて「**統計科学的**/**確率論的アプローチ**」が可能となる。最初の評価軸であるから、当然それは**X軸**や**時間軸**(t軸)の形で与えられる。

![tmpsppviz17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/599d8059-5cbb-5037-aee3-460378ee1963.png)

```python
import networkx as nx

G = nx.DiGraph()
G.add_edge("Observation Origin(0)","Elements(0<x<∞)")
G.add_edge("Elements(0<x<∞)","Observation Limit(∞)")
G.add_edge("Elements(0<x<∞)","Observation Origin(0)",)
G.add_edge("Observation Limit(∞)","Elements(0<x<∞)")
nx.nx_agraph.view_pygraphviz(G, prog='fdp') 
```
![tmp93bjyv9h.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/8260337b-5a14-f349-26bd-9fbee0fe8a4f.png)

```python
import networkx as nx

G = nx.DiGraph()
G.add_edge("Start(0)","Observation Result set(0<=t<=T)")
G.add_edge("Observation Result set(0<=t<=T)","End(T)")
G.add_edge("Observation Result set(0<=t<=T)","Start(0)")
G.add_edge("End(T)","Observation Result set(0<=t<=T)")
nx.nx_agraph.view_pygraphviz(G, prog='fdp') 
```
統計の対象となる実データには当然(観測不可能な)**両極限**は現れず、**最大値**(Max)と**最小値**(Min)がそれが推察可能な形で得られるとも限らない。
![tmpjjlbvf7n.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/b218b558-f4a7-9c2d-b507-fa43f670c812.png)

```python
import networkx as nx

G = nx.DiGraph()
G.add_edge("Min","Elements(Min<=x<=Max)")
G.add_edge("Elements(Min<=x<=Max)","Max")
G.add_edge("Elements(Min<=x<=Max)","Min",)
G.add_edge("Max","Elements(Min<=x<=Max)")
nx.nx_agraph.view_pygraphviz(G, prog='fdp') 
```
この辺りのニュアンスも含め、**確率変数の尺度**(Stanley Smith Stevens,1946年)では「<font color=red>データ間の順位にのみ意味がある</font>」**順位尺度**(Ordinal scale)から「<font color=red>データ間の差にのみ意味がある</font>」**間隔尺度**(Interval scale)にかけてが該当する。
[確率変数の尺度](https://bellcurve.jp/statistics/course/1562.html)

#1次元(<font color=blue>1.0 Dimension</font>)

**中心検出**に成功したら、いよいよこれを**単位元**(Identity Element)として**反元**(Inverse Elements)を設定し、**群**(Group)を定義する事が可能となります。**確率変数の尺度**(Stanley Smith Stevens,1946年)では**比例尺度**(Proportional Scale)に該当。これ以降、**関数列**(Function Sequance)を含む**演算結果集合**(Operation Result Set)が、**観測結果集合**(Ovsevation Result Set)と矛盾しない限り、その**族**(Famiry)を代表する形となるのです。
[確率変数の尺度](https://bellcurve.jp/statistics/course/1562.html)

###加法実数群(Additive Real Group)の場合
[【数理考古学】とある実数列の規定例①等差数列から加法整数群へ](https://qiita.com/ochimusha01/items/07ae45b915bb1aa6c9f5)
**10進法**(Decimal System)、すなわち10を法とする**加法整数群**(Additive Integer Group)の**剰余類**(Residue Class)の多層添字化によって理論上、小数点下を含む実数全体を扱える様に拡張された**両側無限数列**(Both-sides Infinite Sequance)。
![tmpi_zdfl10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/88b6634a-2cd4-36c3-9ede-b9445925c5e8.png)

```python
import networkx as nx

G = nx.DiGraph()
G.add_edge("Observation limit(-∞)","Inverse(-∞<x<0)")
G.add_edge("Inverse(-∞<x<0)","Identity(0)")
G.add_edge("Identity(0)","Elements(0<x<+∞)")
G.add_edge("Elements(0<x<+∞)","Observation Limit(+∞)")
G.add_edge("Inverse(-∞<x<0)","Observation limit(-∞)")
G.add_edge("Identity(0)","Inverse(-∞<x<0)")
G.add_edge("Elements(0<x<+∞)","Identity(0)")
G.add_edge("Observation Limit(+∞)","Elements(0<x<+∞)")

nx.nx_agraph.view_pygraphviz(G, prog='fdp')
```
##乗法実数群(Multiplicative Real Group)の場合
[【数理考古学】とある実数列の規定例②等比数列から乗法群へ](https://qiita.com/ochimusha01/items/58afced6ea8bebf391c7)
上掲の**加法実数群**(均等尺)を$-\infty→0,0→1,+\infty→\infty$に射影した**片側無限数列**(One-sides Infinite Sequance)。均等尺上の乗除算が加減算、冪乗算が乗算に置き換えられる。
![tmpapj3itug.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/13fd7425-4d3c-932f-b0f3-e3491ec0bfaf.png)

```python
import networkx as nx

G = nx.DiGraph()
G.add_edge("Observation limit(0)","Inverse(0<x<1)")
G.add_edge("Inverse(0<x<1)","Identity(1)")
G.add_edge("Identity(1)","Elements(1<x<+∞)")
G.add_edge("Elements(1<x<+∞)","Observation Limit(+∞)")
G.add_edge("Inverse(0<x<1)","Observation limit(0)")
G.add_edge("Identity(1)","Inverse(0<x<1)")
G.add_edge("Elements(1<x<+∞)","Identity(1)")
G.add_edge("Observation Limit(+∞)","Elements(1<x<+∞)")

nx.nx_agraph.view_pygraphviz(G, prog='fdp')
```
おやおや？　正負の概念が導入され、**無限遠点**$\infty$が**無限大**$+\infty$と**無限小**$-\infty$に引き裂かれると同時に、**観測原点**(Observation Origin)が座標上から消えてしまいました。このタイミングで**偶奇**(Parity)の概念は導入されるのは決して偶然でなく、どうやら「**観測原点と観測対象の関係**」もまた**偶数系**(Even System)と**奇数系**(Odd System)に引き裂かれてしまった様なのです。

そんな感じで以下続報…