簡體   English   中英

將每個因子具有一個答案的回歸系數應用於R中數據框中每個因子的多個條目

[英]Apply regression coefficients that have one answer per factor to many entries per factor in a dataframe in R

我有一個數據框,其中包含時間,符號,價格,波動率的列。 我使用此數據框使用符號的虛擬變量運行首次通過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系數中進行乘積運算。

您應提供一個可復制的示例以獲取准確的答案。 這里有一些數據:

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
..............................

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM