2013-11-12 4 views
0

Я хочу создать корреляционную матрицу для нескольких акций, возвращающихся на несколько лет.Удалить NAs из данных возврата запаса для матрицы корреляции в «R»

getSymbols(c("AAPL", "FB", "LNKD")) 
close<-cbind(Cl(AAPL), Cl(FB), Cl(LNKD)) 
roc<-ROC(close) 

Эти компании все огласку в разное время, так что я получаю:

head(close) 

     AAPL.Close FB.Close LNKD.Close 
2007-01-03  83.80  NA   NA 
2007-01-04  85.66  NA   NA 
2007-01-05  85.05  NA   NA 
2007-01-08  85.47  NA   NA 
2007-01-09  92.57  NA   NA 
2007-01-10  97.00  NA   NA 

и:

tail(close) 
      AAPL.Close FB.Close LNKD.Close 
2013-11-04  526.75 48.22  223.72 
2013-11-05  525.45 50.11  224.54 
2013-11-06  520.92 49.12  220.78 
2013-11-07  512.49 47.56  211.47 
2013-11-08  520.56 47.53  215.17 
2013-11-11  519.05 46.20  211.66 

так, когда я:

cor(roc) 

я получаю:

  AAPL.Close FB.Close LNKD.Close 
AAPL.Close   1  NA   NA 
FB.Close   NA  1   NA 
LNKD.Close   NA  NA   1 

В этом случае я вынужден начать матрицу на дату, когда у всех трех компаний есть история возврата запасов?

В этом случае тот:

head(na.omit(close)) 

      AAPL.Close FB.Close LNKD.Close 
2012-05-18  530.38 38.23  99.02 
2012-05-21  561.28 34.03  96.84 
2012-05-22  556.97 31.00  101.33 
2012-05-23  570.56 32.00  103.56 
2012-05-24  565.32 33.03  98.80 

Теперь, если я расширяю эту идею гораздо большую матрицу, как SP 500, я хочу, чтобы избавиться от ВПЛ в истории, не вынимая целые колонны, как столовые с матрица. Есть ли способ очистить данные возврата для этого, чтобы иметь возможность сравнивать доходность для cor-матрицы?

Варианты этого вопроса было предложено, прежде чем без убедительного ответа:

Correlation Matrix in "R" returning NA values

+1

Вы читаете '? Cor'? Попробуйте прочитать файл справки и посмотрите, не подходит ли какой-либо параметр параметра 'use ='. – ialm

ответ

0

Это действительно ialm в раствор, но звучит, как вы хотите

cor(roc, use = 'pairwise.complete.obs') 
1

Это будет иметь смысл только для создать корреляционную матрицу для таймфрейма, где все акции публикуют результаты, чтобы избежать искаженных результатов.

Допустим, у вас есть три компании A, B и C, и ваш timehorizon 2005 до 2009. & B был их IPO в 2005 и C было первичное размещение акций в 2007 году

Если теперь вычислить корреляционную матрицу где вы рассмотрели бы весь часовой пояс от 2005 до 2009 года для Corr (A, B), это значение укажет, насколько тесно они движутся вместе во время бума и периода бюста. Однако ваш Corr (A, C) проявил бы только поведение в период спада.

Хорошо видно, что при возврате акций наблюдается более сильная корреляция во время экономического спада, см. Paper: Correlation of financial markets in times of crisis. Таким образом, ваша корреляционная матрица будет иметь искаженные значения.

На вашем месте я бы посмотрел на временной пояс, где все акции должны иметь обратные цифры. Если внутри все еще очень мало пробелов, я бы рассмотрел их закрытие с линейным приближением na.approx() или сплайн-аппроксимацией na.spline() (часть зоопарка).

Удачного дня.