如何用R线性回归计算金融Beta与Theta(时间衰减)及结果解读
回归系数解读与百分比变动系数计算
一、现有系数的解读
你的理解完全正确:
priceA的系数(0.1959)就是你定义的Beta:在保持months_past不变的前提下,priceA每增加1个单位,priceY平均上涨0.1959个单位。months_past的系数(-56.2)就是你定义的Theta:在保持priceA不变的前提下,每经过1个月,priceY平均下跌56.2个单位。
两个变量的Pr(>|t|)值都远小于0.05,说明系数的统计显著性很高。
二、计算priceA上涨1%时priceY的变动系数
要得到priceA变动1%对应的priceY变动幅度,有两种常用方法:
方法1:对数变换后回归
这是最直接的方式,对priceA和priceY取对数后做回归,此时log(priceA)的系数就是弹性系数,可直接解读为:priceA上涨1%,priceY平均上涨约Z%(变动幅度较小时近似度极高)。
R代码示例:
# 对priceY和priceA取自然对数后回归 lmS9_log = lm(log(priceY) ~ months_past + log(priceA), data = S9) summary(lmS9_log)
查看结果中log(priceA)的Estimate值,就是你需要的Z。
方法2:利用现有回归结果计算点弹性
如果不想重新拟合模型,可以结合现有Beta系数和变量均值计算点弹性,它表示在变量均值水平上的百分比变动关系:
公式:弹性 = Beta * (priceA均值 / priceY均值)
R代码示例:
# 计算变量均值(忽略缺失值) mean_priceA = mean(S9$priceA, na.rm = TRUE) mean_priceY = mean(S9$priceY, na.rm = TRUE) # 提取现有回归的Beta系数 beta_coef = coef(lmS9)["priceA"] # 计算弹性 price_elasticity = beta_coef * (mean_priceA / mean_priceY) print(price_elasticity)
输出的数值就是在均值水平下,priceA上涨1%时priceY上涨的百分比。
内容的提问来源于stack exchange,提问作者Nick Chubb
相关产品推荐
相关产品推荐

