2

R の「PerformanceAnalytics」パッケージを使用する必要があり、このパッケージを使用するには、データを xts データに変換する必要があります。データは次のリンクからダウンロードできます: https://drive.google.com/file/d/0B8usDJAPeV85elBmWXFwaXB4WUE/edit?usp=sharing . したがって、次のコマンドを使用して xts データを作成しました。

data<-read.csv('monthly.csv')
dataxts <- xts(data[,-1],order.by=as.Date(data$datadate,format="%d/%m/%Y"))

しかし、これを行うと、パネルのデータ構造が失われます。データを並べ替えてxtsパネル データ形式に戻そうとしましたが、失敗しました。

xtsパネルデータのようにデータを再編成するのを手伝ってくれませんか。会社 ID (gvkey) とデータ (datadate) で並べ替える必要があります。

4

2 に答える 2

2

xts オブジェクトは時間インデックスのみでソートされます。他のもので並べ替えることはできません。

で data.frame をリストに分割することをお勧めしますgvkey。次に、各リスト要素を xts に変換し、時間の経過とともに変化しない列を削除して、 として保存しますxtsAttributesyearmon毎月のデータを扱っているため、クラスの使用を検討することもできます。

xts オブジェクトでは型を混在させることができないため、非数値の時変値をエンコードする方法を決定する必要があります。

Data <- read.csv('monthly.csv', nrow=1000, as.is=TRUE)
DataList <- split(Data, Data$gvkey)
xtsList <- lapply(DataList, function(x) {
  attrCol <- c("iid","tic","cusip","conm","exchg","secstat","tpci",
    "cik","fic","conml","costat","idbflag","dldte")
  numCol <- c("ajexm","ajpm","cshtrm","prccm","prchm","prclm",
    "trfm", "trt1m", "rawpm", "rawxm", "cmth", "cshom", "cyear")
  toEncode <- c("isalrt","curcdm")
  y <- xts(x[,numCol], as.Date(x$datadate,format="%d/%m/%Y"))
  xtsAttributes(y) <- as.list(x[1,attrCol])
  y
})

各リスト要素は xts オブジェクトになり、完全に冗長なデータを繰り返さないため、はるかにコンパクトになります。gvkeyまた、ビアlapplyやフレンドごとに簡単に解析を実行できます。

> str(xtsList[["1004"]])
An ‘xts’ object on 1983-01-31/2012-12-31 containing:
  Data: num [1:360, 1:13] 3.38 3.38 3.38 3.38 3.38 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:13] "ajexm" "ajpm" "cshtrm" "prccm" ...
  Indexed by objects of class: [Date] TZ: UTC
  xts Attributes:  
List of 13
 $ iid    : int 1
 $ tic    : chr "AIR"
 $ cusip  : int 361105
 $ conm   : chr "AAR CORP"
 $ exchg  : int 11
 $ secstat: chr "A"
 $ tpci   : chr "0"
 $ cik    : int 1750
 $ fic    : chr "USA"
 $ conml  : chr "AAR Corp"
 $ costat : chr "A"
 $ idbflag: chr "D"
 $ dldte  : chr ""

そして、次の方法で属性にアクセスできますxtsAttributes

> xtsAttributes(xtsList[["1004"]])$fic
[1] "USA"
> xtsAttributes(xtsList[["1004"]])$tic
[1] "AIR"
于 2014-01-28T00:34:58.427 に答える
0

この目標を達成する効率的な方法は、'reshape2' パッケージを使用して、パネル データ (ロング フォーマット) をワイド フォーマットに変換することです。見積もりを実行した後、長い形式またはパネル データ形式に変換します。次に例を示します。

library(foreign)
library(reshape2)
dd <- read.dta("DDA.dta") // DDA.dta is Stata data; keep only date, id and variable of interest (i.e. three columns in total)
wdd<-dcast(dd, datadate~gvkey) // gvkey is the id
require(PerformanceAnalytics)
wddxts <- xts(wdd[,-1],order.by=as.Date(wdd$datadate,format= "%Y-%m-%d"))

ssd60A<-rollapply(wddxts,width=60,SemiDeviation,by.column=TRUE,fill=NA) // e.g of rolling window calculation
ssd60A.df<-as.data.frame(ssd60A.xts) // convert dataframe to xts
ssd60A.df$datadate=rownames(ssd60A.df) // insert time index
lssd60A.df<-melt(ssd60A.df, id.vars=c('datadate'),var='gvkey') // convert back to panel format
write.dta(lssd60A.df,"ssd60A.dta",convert.factors = "string") // export as Stata file

次に、それをマスターデータベースとマージして、回帰を実行します。

于 2014-08-25T23:14:00.063 に答える