このページについて

概要:このページでは、統計言語Rを使う上で有益なプログラムを蓄積します。ご使用は自己責任で。

(今後、随時updateしていく予定)

親ページ:このページの親ページはRです。

目次

基本統計量

収益率

xに株価系列を入れると対数階差で近似した収益率を返してくれる。

diff(log(x))

以下でも同じ結果を返す。

#収益率
#yの増加率diff(log(y))で近似可能。 
profitrate <- function(x)
{
z <- log(x[-1])-log(x[-length(x)])
z
}

歪度

#歪度
skew <- function(x){
z1 <- mean(z(x)^3)
z1
}

尖度

#尖度
kurt <- function(x){
z2 <- mean(z(x)^4)
z2
}

異常値の数

#異常値の数(標準偏差の±2 倍、± 3 倍、± 4 倍を超えた標本数))
abnormal.number2 <- function(x){
z <- length(x[x>2*sd(x) | x< -2*sd(x)])
z
}

abnormal.number3 <- function(x){
z <- length(x[x>3*sd(x) | x< -3*sd(x)])
z
}

abnormal.number4 <- function(x){
z <- length(x[x>4*sd(x) | x< -4*sd(x)])
z
}

上記を一般化すれば、以下となる。

#異常値の数(標準偏差の±k 倍を超えた標本数)
abnormal.number <- function(x,k){
z <- length(x[x>k*sd(x) | x< -k*sd(x)])
z
}

標本分散,標本共分散

#標本分散
sample.variance<-function(a) var(a)*(length(a)-1)/length(a) 
  #以下でも同じ。 
  #sample2.variance<-function(x) mean(x^2)-(mean(x))^2 

#標本共分散
sample.covariance<-function(x,y) mean(x*y)-mean(x)*mean(y) 

相関係数

#相関係数 cor(x,y)という組み込み関数があるが、一応練習も兼ねて作成。 
sugi.soukan<-function(x,y){
sample.covariance<-mean(x*y)-mean(x)*mean(y)          #標本共分散を定義
variance1<-function(a) var(a)*(length(a)-1)/length(a) #標本分散を定義
#xの標準偏差を求める
x1<-variance1(x)
sdx<-sqrt(x1)
#yの標準偏差を求める
y1<-variance1(y)
sdy<-sqrt(y1)
#最後の相関係数を計算
soukan<-sample.covariance/(sdx*sdy)
soukan
}

基本統計量を一式まとめて求める

######################################################
#               基本統計量 
######################################################

#xに1変量株価データ(つまりベクトル)を入れると収益率の基本統計量を返してくれるプログラム。 
sugi.basic<-function(x){
x1<-diff(log(x))                                        #まずは対数階差をとって収益率データに変換
variance1<-function(a) var(a)*(length(a)-1)/length(a)   #標本分散を定義
sdx<-sqrt(variance1(x1))                                #標本標準偏差を定義
#異常値の数を返すプログラムを定義
abnormal.number <- function(p,k){
z <- length(p[p>k*sd(p) | p< -k*sd(p)])
z
} 
T<-length(x1)
R<-mean(x1)
x2<-(x1-R)/sdx        #x2を標準化
s<-mean(x2^3)         #歪度 
k<-mean(x2^4)         #尖度 
max<-max(x1)
min<-min(x1)
a2<-abnormal.number(x1,2)
a3<-abnormal.number(x1,3)
a4<-abnormal.number(x1,4)

#ここまで計算した基本統計量をまとめて返す。
return(list  ("T"=T,"R"=R,"SD"=sdx,"skew"=s,"kurt"=k,"max"=max,"min"=min,"a2"=a2,"a3"=a3,"a4" =a4))
}

Reference

書籍

リンク


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-09-16 (金) 23:14:51