3

列 1 の日付と列 2 から n までの一連の測定値で構成されるデータのファイルがあります。Pandas が日付を理解しているのは気に入っていますが、シンプルなベスト フィット ラインを実行する方法がわかりません。np.polyfit を使用するのは簡単ですが、日付を理解していません。私の試みのサンプルは次のとおりです。

from datetime import datetime
from StringIO import StringIO
import pandas as pd

zdata = '2013-01-01, 5.00, 100.0 \n 2013-01-02, 7.05, 98.2 \n 2013-01-03, 8.90, 128.0 \n 2013-01-04, 11.11, 127.2 \n 2013-01-05 13.08, 140.0'

unames = ['date', 'm1', 'm2']

df = pd.read_table(StringIO(zdata), sep="[ ,]*", header=None, names=unames, \
parse_dates=True, index_col=0)

Y = pd.Series(df['m1'])

model = pd.ols(y=Y, x=df, intercept=True)

In [232]: model.beta['m1']
Out[232]: 0.99999999999999822

In [233]: model.beta['intercept']
Out[233]: -7.1054273576010019e-15

これらの数字をどのように解釈しますか? 日付の代わりに 1,2..5 を使用すると、 np.polyfit は [ 2.024, 2.958] を返します。これは、予想される勾配と切片です。

簡単な例を探しましたが、見つかりませんでした。

4

1 に答える 1

2

あなたが提供したコードで多重線形回帰を行っていると思います:

-------------------------Summary of Regression Analysis-------------------------

Formula: Y ~ <m1> + <m2> + <intercept>

Number of Observations:         5
Number of Degrees of Freedom:   3

R-squared:         1.0000
Adj R-squared:     1.0000

Rmse:              0.0000

F-stat (2, 2):        inf, p-value:     0.0000

Degrees of Freedom: model 2, resid 2

-----------------------Summary of Estimated Coefficients------------------------
      Variable       Coef    Std Err     t-stat    p-value    CI 2.5%   CI 97.5%
--------------------------------------------------------------------------------
            m1     1.0000     0.0000 271549416425785.53     0.0000     1.0000     1.0000
            m2    -0.0000     0.0000      -0.09     0.9382    -0.0000     0.0000
     intercept    -0.0000     0.0000      -0.02     0.9865    -0.0000     0.0000
---------------------------------End of Summary---------------------------------

回帰の式に注意してください: Y ~ <m1> + <m2> + <intercept>. m1 と m2 を別々に単純な線形回帰が必要な場合は、X を作成する必要があります。

X = pd.Series(range(1, len(df) + 1), index=df.index)

そして回帰を行います:

model = pd.ols(y=Y, x=X, intercept=True)

結果:

-------------------------Summary of Regression Analysis-------------------------

Formula: Y ~ <x> + <intercept>

Number of Observations:         5
Number of Degrees of Freedom:   2

R-squared:         0.9995
Adj R-squared:     0.9993

Rmse:              0.0861

F-stat (1, 3):  5515.0414, p-value:     0.0000

Degrees of Freedom: model 1, resid 3

-----------------------Summary of Estimated Coefficients------------------------
      Variable       Coef    Std Err     t-stat    p-value    CI 2.5%   CI 97.5%
--------------------------------------------------------------------------------
             x     2.0220     0.0272      74.26     0.0000     1.9686     2.0754
     intercept     2.9620     0.0903      32.80     0.0001     2.7850     3.1390
---------------------------------End of Summary---------------------------------

を使用すると、わずかに異なる数値が得られるのは少し奇妙ですnp.polyfit。これが私の出力です:

[ 2.022  2.962]

olsこれはパンダの出力と同じです。これをscipyでチェックしたlinregressところ、同じ結果が得られました。

于 2013-04-08T19:58:47.087 に答える