【问题标题】:Tail index using hill estimator in R在R中使用希尔估计器的尾索引
【发布时间】:2014-07-16 03:58:10
【问题描述】:

作为我的数据分析(重尾数据)的一部分,我希望计算大约 100 个公司回报时间序列的尾部(左右)指数。我的数据存储在一个大型动物园对象中,标题为公司名称。

这是我目前计算山峰估计量的方法:

returns <- read.zoo("returns.csv", header=TRUE, sep=",", format="%d-%m-%y")
returns_hplots <- lapply(returns, hillPlot)
returns_hill <- sapply(returns_hplots, function(x) x$y)
returns_hill <- sapply(returns_hill, '[', seq(max(sapply(returns_hill,length)))

因此,我为我的 105 家公司提供了一个数据框 [1:204, 1:105],其中填充了所有山坡估算器和 NA(以便所有列具有相同数量的行)。

但是,我想计算左尾和右尾的山估计量,目前整个分布(每家公司)只有一个山估计量。

因此,我需要根据分布拆分我的数据。 我搜索了基于分布的数据拆分,但没有找到好的答案。 我的想法是计算 50% 的分位数,然后根据这个分位数分离我的数据。

returns_quantile <- sapply(returns, quantile, .5)

这会产生一个 1:105 的向量,其中包含所有 50% 的分位数值。现在我想根据这个分位数分离我的返回动物园对象,如下所示:

returns_left <- ...
returns_right <- ...

有人知道如何根据分位数分割动物园对象吗? 或者有没有其他方法可以只为左/右尾巴直接计算山估计?

【问题讨论】:

    标签: r time-series


    【解决方案1】:

    我终于从其他研究人员那里找到了一些示例代码,他们计算了上下尾的山估计量。

    这是我计算两个尾部的山估计量的代码:

    returns <- read.zoo("returns.csv", header=TRUE, sep=",", format="%d-%m-%y")
    returns_upper <- lapply(returns, hillPlot, doplot=FALSE) #set doplot to false to speed up calculation
    returns_upper <- sapply(returns_upper, function(x) x$y) #extract the hill estimators
    returns_upper <- sapply(returns_upper, '[', seq(max(sapply(returns_upper,length))) #create a data frame where each column has equal length (easier analysis)
    
    returns_lower <- lapply(-returns, hillPlot, doplot=FALSE)
    returns_lower <- sapply(returns_lower, function(x) x$y)
    returns_lower <- sapply(returns_lower, '[', seq(max(sapply(returns_lower,length)))
    

    所以我之前的方法(在问题中)实际上只是计算上(右)尾的山估计值。

    【讨论】:

    • 我正在尝试您的代码。语句:returns_upper
    猜你喜欢
    • 1970-01-01
    • 2019-02-13
    • 2016-10-21
    • 2023-02-08
    • 1970-01-01
    • 2019-09-20
    • 2010-09-11
    • 2012-01-17
    • 2023-03-23
    相关资源
    最近更新 更多