我有一个数据框,其中包含时间,符号,价格,波动率的列。我使用此数据帧使用符号
的虚拟变量运行第一次传递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系数中完成产品。
答案 0 :(得分: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
..............................