首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自PerformanceAnalytics中的CAPM.alpha的错误

来自PerformanceAnalytics中的CAPM.alpha的错误
EN

Stack Overflow用户
提问于 2012-12-03 13:32:32
回答 1查看 594关注 0票数 2

当我尝试运行PerformanceAnalytics参考的第22页中的示例时,我得到了一条错误消息。见下文。

附言:我是一个初学者&这对我来说从来都不管用。此外,我的潜在问题是,当我尝试将table.CAPM与我自己的数据一起使用时,我得到了完全相同的错误。

谢谢你的帮助。

代码语言:javascript
复制
> search()
[1] ".GlobalEnv"                   "package:PerformanceAnalytics"
[3] "package:xts"                  "package:zoo"                 
[5] "package:stats"                "package:graphics"            
[7] "package:grDevices"            "package:utils"               
[9] "package:datasets"             "package:methods"             
[11] "Autoloads"                    "package:base"                
> version
           _                            
platform       x86_64-w64-mingw32           
arch           x86_64                       
os             mingw32                      
system         x86_64, mingw32              
status                                      
major          2                            
minor          15.2                         
year           2012                         
month          10                           
day            26                           
svn rev        61015                        
language       R                            
version.string R version 2.15.2 (2012-10-26)
nickname       Trick or Treat               
> data(managers)
> CAPM.alpha(managers[,1,drop=FALSE], managers[,8,drop=FALSE], Rf=.035/12)
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
  0 (non-NA) cases
> 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-03 16:58:45

错误不在你的代码中,它在R包本身。如果它显示在package validation check here上,则可以使用以下命令进行复制:

代码语言:javascript
复制
library(PerformanceAnalytics)
example(CAPM.alpha)

错误似乎在Return.excess.R的第40行。应该替换为:

代码语言:javascript
复制
xR = coredata(as.xts(R))-coredata(as.xts(Rf))

在实践中解决这个问题的最简单方法是运行:

代码语言:javascript
复制
require(utils)
assignInNamespace(
  "Return.excess",
  function (R, Rf = 0)
  { # @author Peter Carl
    # edited by orizon
      # .. additional comments removed
      R = checkData(R)
      if(!is.null(dim(Rf))){
          Rf = checkData(Rf)
          indexseries=index(cbind(R,Rf))
          columnname.Rf=colnames(Rf)
      }
      else {
          indexseries=index(R)
          columnname.Rf=Rf
          Rf=xts(rep(Rf, length(indexseries)),order.by=indexseries)
      }
      return.excess <- function (R,Rf)
      { 
          xR = coredata(as.xts(R))-coredata(as.xts(Rf)) #fixed
      }
      result = apply(R, MARGIN=2, FUN=return.excess, Rf=Rf)
      colnames(result) = paste(colnames(R), ">", columnname.Rf)
      result = reclass(result, R)
      return(result)
  },
  "PerformanceAnalytics"
)

那么你的原始命令就可以工作了:

代码语言:javascript
复制
> data(managers)
> CAPM.alpha(managers[,1,drop=FALSE], managers[,8,drop=FALSE], Rf=.035/12)
[1] 0.005960609

请注意,我并没有验证该函数是否执行了它声称的功能。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13677687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档