如何在R中计算基于回归的弹性系数95%置信区间?
计算价格弹性系数的95%置信区间(R实现)
背景
已知价格弹性系数(PE)的计算逻辑:回归方程中Price.Eggs的β系数 ×(月度平均价格 / 平均销量)。示例回归方程及计算过程如下:
Sales of Eggs = 137.37 – (16.12)Price.Eggs + 4.15 (Ad.Type) – (8.71)Price.Cookies
(ΔQ/ΔP) 对应回归系数-16.12,取平均价格4.43、平均销量30,计算得PE = -16.12 * 4.43/30 = -2.38
需求:基于上述逻辑,在R中实现该弹性系数的95%置信区间计算。
实现步骤
1. 拟合回归模型
用你的数据集拟合线性回归模型,示例代码:
# 假设数据集名为egg_data model <- lm(Sales ~ Price.Eggs + Ad.Type + Price.Cookies, data = egg_data)
2. 提取回归系数的置信区间
从模型中提取Price.Eggs系数的95%置信区间:
coef_ci <- confint(model, "Price.Eggs", level = 0.95)
3. 计算弹性系数的置信区间
用平均价格与平均销量的比值,对回归系数的置信区间做线性变换:
# 计算平均价格和平均销量 mean_price <- mean(egg_data$Price.Eggs) mean_sales <- mean(egg_data$Sales) # 转换为弹性的置信区间 pe_ci <- coef_ci * (mean_price / mean_sales) # 输出结果 print(pe_ci)
4. 结果示例
对应示例数值,运行后会输出类似结果:
2.5 % 97.5 % Price.Eggs -3.33 -1.93
即弹性系数的95%置信区间为**-3.33至-1.93**(符号与回归系数一致)。
补充:自助法(Bootstrap)实现
若需更严谨的推断(不依赖正态分布假设),可使用自助抽样:
library(boot) # 定义弹性计算函数 elasticity_fun <- function(data, indices) { d <- data[indices,] mod <- lm(Sales ~ Price.Eggs + Ad.Type + Price.Cookies, data = d) coef(mod)["Price.Eggs"] * (mean(d$Price.Eggs)/mean(d$Sales)) } # 执行1000次自助抽样 boot_result <- boot(data = egg_data, statistic = elasticity_fun, R = 1000) # 提取BCA法95%置信区间 boot_ci <- boot.ci(boot_result, type = "bca") print(boot_ci)
内容的提问来源于stack exchange,提问作者psysky
相关产品推荐
相关产品推荐

