2017-02-24 9 views
3

2軸間の関係がわからない場合は、散布図の最適なフィッティングラインを見つける方法はありますか(そうでなければ、scipy.optimizeを使用することができます)。散布図この散布図のベストフィッティングライン

scatterplot

のようなもの、私はこの expected_result のような行を持ちたいと私は私の更なる計算のために最高のフィットラインのポイントを取得する必要があり

for j in lat : 
l=94*j 
i=l-92 
for lines in itertools.islice(input_file, i, l): 
    lines=lines.split() 
    p.append(float(Decimal(lines[0]))) 
    vmr.append(float(Decimal(lines[3]))) 
    plt.scatter(vmr, p) 
+0

は、使用可能な複数の変数を持っていません?。あなたは[scikit](http://scikit-learn.org/stable/)を見ることができます。 –

+0

このようなものをお探しですか? https://en.wikipedia.org/wiki/Local_regression – cel

+0

私の提案は、方程式の一般的な形を推測し、最適な適合を見つけるためにscipy.optimizeを使うことです。 –

答えて

2

LOWESS (Locally Weighted Scatterplot Smoothing)、ノンパラメトリック回帰法を使用できます。

Statsmodelsには、独自のスムーザーに合わせて使用​​できる実装hereがあります。

Statsmodels実装を使用する例については、StackOverflow question on visualizing nonlinear relationships in scatter plotsを参照してください。

また、Seaborn視覚化ライブラリのregplot()関数の実装をキーワード引数lowess=Trueと組み合わせて使用​​することもできます。詳細は、Seaborn documentationを参照してください。

次のコードは、Seabornを使った例で、上記のStackOverflowの質問からのデータ:

import numpy as np 
import seaborn as sns 
sns.set_style("white") 

x = np.arange(0,10,0.01) 
ytrue = np.exp(-x/5.0) + 2*np.sin(x/3.0) 

# add random errors with a normal distribution      
y = ytrue + np.random.normal(size=len(x)) 

sns.regplot(x, y, lowess=True, color="black", 
      line_kws={"color":"magenta", "linewidth":5}) 

resulting figure

+0

ありがとう、ありがとうございました – caty

1

これはおそらくmatplotlibの質問ではありませんが、私はパンダを使ってこのようなことをローリングメジアンを使って行うことができると思います。

smoothedData = dataSeries.rolling(10, center = True).median() 

実際には何かでローリングメジアンを行うことができますが、パンダには機能が組み込まれています。ナンシーもそうかもしれない。