2

我有一个数据框,其中包含时间、符号、价格、波动率列。我使用此数据框使用符号的虚拟变量运行第一次 OLS 回归

fit <- lm(volatility~factor(symbol) + 0

然后我想在第二次回归回归中使用该回归的系数,所以我保存回归的系数以重复使用,然后我想用它来衡量波动率

scale <- summary(fit)$coefficients[,1]
yscale <- volatility/scale
fit2 <- lm(yscale~factor(time) + factor(symbol)*factor(time) + 0

我遇到的问题是我想使用适用于每个符号的因子系数。因此,在原始数据框中,我想将波动率除以与其符号匹配的系数。因此,如果我有符号、DDX、CTY、LOL,那么我想将 DDX 的波动率除以回归系数 DDX 的系数,然后对 CTY 和 LOL 执行相同的操作。另外,我需要弄清楚如何在第二个 fit2 系数中做产品。

4

1 回答 1

1

您应该提供一个可重现的示例以获得准确的答案。这里有一些数据:

dat <- data.frame(volatility= rnorm(30),
                  symbol = sample(c('DDX', 'CTY', 'LOL'),30,rep=TRUE))
fit <- lm(volatility~factor(symbol) + 0,data=dat)
mm <- coef(fit)
names(mm) <- gsub('factor\\(symbol\\)','',names(mm))

我转换名称以获得可以稍后使用的漂亮名称:

   CTY        DDX        LOL 
 -0.1991273  0.1331980 -0.1567511 

然后使用transform,我将每个波动率与相应的系数相除:

transform(dat,vol.scale = volatility/mm[symbol],coef = mm[symbol])
      volatility symbol    vol.scale       coef
1  -0.592306253    DDX  -4.44680974  0.1331980
2   1.143486046    DDX   8.58485769  0.1331980
3  -0.693694139    LOL   4.42544868 -0.1567511
4  -0.166050131    LOL   1.05932325 -0.1567511
5   1.381900588    CTY  -6.93978353 -0.1991273
..............................
于 2013-06-25T19:43:55.043 回答