堅牢な手法と、 Python とのシームレスな統合を備えたJMP 18の強力な組み合わせにより、回帰分析を強化します。
シンプルなケーススタディ
サンプルデータテーブルを次に示します。

- データテーブルには99行のシミュレーションデータが含まれています
- データは検出が難しい外れ値の種類を示すために設計された。
このサンプルデータテーブルで外れ値を検出できますか?
最初は、単変量アプローチを通じてデータを調べることができます。


単変量アプローチでは外れ値を特定できませんでした。
ただし、範囲を 2 次元に広げると、外れ値が発生する可能性があります。


前述のシナリオは、グラフィカル分析によって外れ値を特定できるため、それほど深刻ではありません。
しかし、たとえば 10 を超えるような多数の変数を扱う場合はどうなるでしょうか?
Anscombe データ テーブルを使用したロバスト中央値回帰
外れ値の影響を軽減するために、中央値回帰などの堅牢な回帰手法を採用することができます。
ロバストな中央値回帰は、中央値回帰を使用して絶対偏差を最小限に抑え、等分散および正規の仮定に違反しない統計手法です。
JMP Pro では、「一般化回帰」パーソナリティを選択し、「分位点回帰」分布を選択して、モデルの適合プラットフォームで分位点を0.5に指定することで、中央値回帰を簡単に適用できます。
以下は、JMP 内のサンプル データセット「Anscombe」に適用された中央値回帰の結果を示しています。



JMP Pro 18 ではなく JMP 18 を使用している場合は、JMP 18 の新機能である Python 統合によって中央値回帰を適用できます。
import jmp
import jmputils
# Checking installed packages
# jmputils.jpip('list')
dt = jmp.open(jmp.SAMPLE_DATA + "anscombe.jmp")
""""
print(dt.name)
print(f'Number of columns: {dt.ncols}')
dt['y3']
"""
# Install Packages
""""
jmp.run_jsl('''
Python Install Packages("statsmodels")
''')
jmp.run_jsl('''
Python Install Packages("matplotlib")
''')
"""
# Import Modules
import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression
# Reshape Data
x = np.reshape(dt['x3'],(-1,1))
y = np.reshape(dt['y3'],(-1,1))
print(x)
print(y)
# Mean Regression vs Median Regression
lr = LinearRegression()
lr.fit(x, y)
beta_ls = lr.intercept_, lr.coef_[0]
q = 0.5
rm = sm.QuantReg(y, sm.add_constant(x)).fit(q, prepend=True)
beta_md = rm.params[0], rm.params[1]
# Print Mean & Median Regression Coefficient
print(beta_ls)
print(beta_md)
ベータ係数の出力は以下のように LOG ウィンドウにリストされます。
(array([<FONT color="#0000FF"><STRONG>3.00245455</STRONG></FONT>]), array([<FONT color="#0000FF"><STRONG>0.49972727</STRONG></FONT>]))
(<FONT color="#FF0000"><STRONG>4.009997266957748</STRONG></FONT>, <FONT color="#FF0000"><STRONG>0.34500026527269356</STRONG></FONT>)
ご参考までに、以下の結果は JMP を使用して計算された平均回帰係数を示しています。
上記のベータ係数は、平均回帰と中央値回帰の両方で比較できます。

結論;
提供されるデモンストレーションでは、JMP 18 における JMP と Python の相互作用の基礎的な理解が得られます。
JMP 内での Python 統合のパワーを活用すると、分析能力を高める素晴らしい機会が生まれ、専門知識を広げ、より強力な洞察を得ることができます。
読みやすく、コピー&ペーストしやすいように、ここで再フォーマットしました。
import jmp
# from jmputils import jpip
# jpip('install', 'statsmodels scikit-learn matplotlib numpy pandas')
dt = jmp.open(jmp.SAMPLE_DATA + "anscombe.jmp")
# Import Modules
import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression
# Reshape Data
x = np.reshape(dt['x3'],(-1,1))
y = np.reshape(dt['y3'],(-1,1))
print(x)
print(y)
# Mean Regression vs Median Regression
lr = LinearRegression()
lr.fit(x, y)
beta_ls = lr.intercept_, lr.coef_[0]
q = 0.5
rm = sm.QuantReg(y, sm.add_constant(x)).fit(q, prepend=True)
beta_md = rm.params[0], rm.params[1]
# Print Mean & Median Regression Coefficient
print(beta_ls)
print(beta_md)
@ララ ご不便をおかけして申し訳ございません。現在、JMP 18 の試用版にはアクセスできません。ただし、JMP の新しい試用版を近日中に提供できるよう鋭意作業を進めておりますので、ご安心ください。ご理解とご協力をよろしくお願いいたします。