2

私は現在、価格スプレッドの時系列をグラフ化してから、回帰を伴うアブラインを追加しようとしています。開始する直前にプロットを取得したかったので、現在これは単なるAR(1)です。

データは.XLSからのものであり、OpenOfficeでそのように編成されています

Date - Price1 - Price 2 - NA.(Empty) 
01.01.1982 - 1.56 - 2.53 -  
[...]

私はこれを次のように読んでいます

library(xlsx)
library(AER)
x<-read.xlsx("data.xlsx",1)

それから私はそのように空の列を埋めます

x$NA.=(x$Price1-x$Price2)

これで、このhead()を生成するテーブルがメモリにあります。

       Date Price1 Price2 NA.
1 1987-08-28  18.30  19.44 1.24
2 1987-08-31  18.65  19.75 1.12

(日付の前にインデックス列があります。日付でプロットするので、実際には必要ありませんが、そこにあります)

それから私はします

plot(x$Date,x$NA.)

正しいプロットが得られます。そのプロットコマンドを少し変更して、正しいグリッド、軸、日付、線などを取得しましたが、上記の単純なプロットバージョンでも問題が解決しないため、編集では問題は発生しません。

問題は次のとおりです。

今私が線をプロットしようとすると

abline(a=1,b=1,col="blue")

動作しません。コマンドは実行されますが、行が表示されません。でも:

abline(a=1,b=0,col="blue")

意図したとおりに機能し、青い水平線を表示します。

私が抱えている問題は、たとえば次のように、回帰オブジェクトをプロットにフィードしたいということです。

SPRC=zoo(x$NA.,x$Date)
SPRC2=lag(SPRC, -1)
SPRC=SPRC[2:length(SPRC)]
LMO<-lm(SPRC ~ SPRC2)
abline(a=LMO$coefficients[2],b=LMO$coefficients[1],col="red")

私がやろうとしているのは、物事をテストするための単純なARです。回帰は意図したとおりに機能しますが、ablineは出力を生成しません。

また、変数なしでablineを実行しようとしました。これは、b=0の場合にのみ機能します。私も代わりにやろうとしました

plot(SPRC)

そして、あらゆる種類のアブラインが表示されないか、垂直線(!)になります。b = 0の場合のみ、水平線になります。

これはデータオブジェクトまたは入力に関係していると思いますが、なぜそれが機能しないのか本当に迷っています。Dateオブジェクトでas.Dateも試しましたが、何も変わりません。カスタムグリッド、パー、ロケーターテキスト、軸などを追加するなど、他のすべてのプロットコマンドは機能しているようです。クリーンなRセッションを開始し、上記のコードを入力するだけで問題が発生します。また、回帰変数、a値とb値、またはプロット変数の順序を切り替えようとしました。それでも動作しません

何が問題になるのか想像できますか?

編集:typeof()の場合はデータ型をチェックしました。typeof xは「リスト」であり、他のすべては「ダブル」です。x$Date<-as.Date(x$Date,"%d.%m.%Y")

Edit2:先に進み、ファイルをcsvとして保存し、read.csvで読み取った後、

plot(x$Price1)

abline(a=40,b=1)

わずかに時計回りに回転する垂直(!)線を生成するだけです。私のRは壊れていますか? ここに画像の説明を入力してください

(私は、価格に対してスケールがずれていることを認識しています。スプレッドは約0です。しかし、a = 40でも、線は同じです)

4

1 に答える 1

2
x<- read.table(text="Date Price1 Price2 NA.
 28.08.1987  18.30  19.44 1.24
 31.08.1987  18.65  19.75 1.12", sep="", header=TRUE)
x$Date <- as.Date(x$Date, "%d.%m.%Y")

plot(x$Date, x$NA.)

ここに画像の説明を入力してください

私のロケール設定はフランス語なので、xラベルは金曜日から月曜日を表します。

# If we're trying to find the actual coordinates of some points on the plot
# here is what we find:
locator() 
$x
[1] 6449.495 6448.035 6450.967

$y
[1] 1.182379 1.186610 1.182908

# The x axis is running from 6448 to 6451 and here is the reason:

x$Date # Here is your date vector
[1] "1987-08-28" "1987-08-31"
as.numeric(x$Date) # And here it is converted in numerics
[1] 6448 6451 # Hence the values found on the plot with locator.

# The default origin for dates is the first of January, 1970
# 6448 is the number of days from that date to the 28th of August 1987.

# But you can still use regression tools:
lm(NA.~Date, data=x)->lmx
abline(lmx)  # YOu don't actually need to break your lm object into its coefficients, abline recognize lm objects.

ここに画像の説明を入力してください

# And the same works with package zoo
library(zoo)
x<- read.table(text="Date Price1 Price2 NA.
 28.08.1987  18.30  19.44 1.24
 31.08.1987  18.65  19.77 1.12
 01.09.1987  18.65  19.75 1.10", sep="", header=TRUE)
x$Date <- as.Date(x$Date, "%d.%m.%Y")
SPRC<-zoo(x$NA.,x$Date)
SPRC2<-lag(SPRC, -1)
SPRC<-SPRC[2:length(SPRC)]
LMO<-lm(SPRC ~ SPRC2)
plot(SPRC)
abline(LMO)

ここに画像の説明を入力してください

于 2012-09-19T08:50:11.213 に答える