如何计算R中的因子弹性?例如,“从数据集nlsw88计算样本中所有女性的工资保有权弹性”
h <- read.dta("nlsw88.dta")
h1 <- mutate(h, age = log(h$age), wage = log(h$wage))
model2 <- lm(data = h1,
wage ~ age + race + married + never_married + grade + collgrad + industry + union + occupation + hours + ttl_exp + tenure + c_city)
我使用这个公式来计算弹性
elas1<-as.numeric(model2$coefficients["age"]*mean(h1$age)/mean(h1$wage))
-0.2217391
但是使用这个公式我无法计算“种族”弹性,因为它不是数字,
如果我放elas3<-as.numeric(model2$coefficients["hours"]*mean(h1$hours)/mean(h1$wage))
怎么了?
答案 0 :(得分:3)
当您不包含任何可重复的示例时,很难给出准确的答案,但这里有一个如何计算需求弹性的示例:
# Create a data
df = data.frame(sales = c(18,20,22,23), Price=c(4.77,4.67,4.75,4.74))
# Run regression
formula = lm(sales~., data=df)
# Get the summary of the regression
summary(formula)
#Call:
#lm(formula = sales ~ ., data = df)
#Residuals:
# 1 2 3 4
#-2.6344 -0.9427 1.3040 2.2731
#Coefficients:
# Estimate Std. Error t value Pr(>|t|)
#(Intercept) 35.344 170.297 0.208 0.855
#Price -3.084 35.983 -0.086 0.940
要计算需求的弹性,我们使用以下公式: PE =(ΔQ/ΔP)*(P / Q)
(ΔQ/ΔP)由我们的回归公式中的系数-3.084确定。
要确定(P / Q),我们将使用平均价格(4.73)和平均销售额(20.75)。
The PE = -3.084 * 4.73/20.75 = -0.70
formula$coefficients["Price"]*mean(df[,2])/mean(df[,1])
# -0.7033066
这意味着[将您的工资中给定产品的价格]增加1个单位将使销售额减少0.70个单位。
希望有所帮助