【问题标题】:Demeaning / Mean-centering in RR中的贬低/均值居中
【发布时间】:2018-05-17 19:55:38
【问题描述】:

我正在寻找答案,但找不到答案,所以我希望这是一个尚未触及的话题。

我有一个来自 CRSP 的 xlsx 面板数据文件,用于 1963 年至 2017 年纽约证券交易所所有公司的月度股票回报。这些是列:

月份(DD/MM/YYYY)|公司代码 |公司名称 |行业代码 |返回

例如1981 年 3 月 31 日 |苹果 |苹果公司| 12345 | -0.07512

现在我想在一个额外的列中计算贬低回报,即 Return(Apple,March1981) MINUS Mean-Return(Apple,whole sample period)。 我正在尝试使用 scale 函数,但显然,它贬低了所有回报的平均值,而不仅仅是苹果特定的回报。我如何编码它应该只将苹果返回到平均计算中?

提前感谢您,祝您有美好的一天!

编辑:删除了 excel 文件。

【问题讨论】:

  • 如果没有可重复的数据,这很难验证,但您可能希望来自dplyr:df %>% group_by(`Company Code`) %>% mutate(demeaned = Return - mean(Return))
  • 行不通我认为是因为列中也有非数字值,有时列中有空格或“A”或“B”之类的字母。我试过了:dplyr::select_if(Returns, is.numeric)nums <- as.numeric(levels(Returns))[as.integer(Returns)] m <- mean(nums, na.rm = T) nums[is.na(nums)] <- m Returns_new.x <- nums 但它没有用。
  • as.numeric 不能神奇地将事物转换为数值,尤其是对于空白或字母。您需要使用filter 或其他方法删除这些行。
  • 我现在有这个:``` r testdata1 %>% group_by(Ticker Symbol) %>% mutate(Return adj. = as.numeric(Return adj.)) %>% mutate( avg_return = mean(Return adj., na.rm = TRUE)) %>% mutate(demeaned_return = Return adj. - avg_return) #> testdata1 中的错误 %>% group_by(Ticker Symbol) %>% mutate(Return adj. = as.numeric(Return adj.)) %>% : konnte Funktion "%>%" nicht finden ``` 虽然我已经安装了 dplyr,但它说它找不到函数 "%>%"。并且没有新列,所以mutate函数没有通过。
  • 安装后有没有给library(dplyr)打过电话?并且您没有将管道的结果分配回任何对象;以x <- testdata %>% ... 开头

标签: r statistics regression


【解决方案1】:

在您阅读整个评论部分之前,我自己回答我的问题:

正如你提到的@Calum,我只是忘记将新管道分配回一个对象。我使用的代码是:

maindata <- testdata1 %>%
group_by(Ticker Symbol) %>%
mutate(Return = as.numeric(Return)) %>%
mutate(avg_return = mean(Return, na.rm = TRUE)) %>%
mutate(demeaned_return = Return - avg_return)

最好, 克莱纳德

【讨论】:

    猜你喜欢
    • 2013-01-19
    • 2021-11-10
    • 2015-02-10
    • 2014-02-25
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 2019-10-20
    相关资源
    最近更新 更多