我想以图形方式表示线的斜率,其中线由公式确定,该公式取一组点的加权平均值。权重基于未表示的外部因素。
我有一个聚合图,x轴上的x变量(价格)和y上的相关(数量)。我试图用另一个图表覆盖那个图表,这个图表只是一组代表数量变化的陡峭程度的线,我们从经验上得出的价格并不等于曲线的斜率。
x轴应该是价格; y应该是音量;曲线的斜率应该是弹性的。我有办法在R吗?
弹性是价格变化1美元的变化。它在不同的价位上有所不同。
df
Category Price Volume_Band Elasticity
alpha $1 50,000 -0.5
beta $2 100,000 -1
gamma $3 200,000 -1.5
delta $4 250,000 -2
答案 0 :(得分:1)
查看数据时,它似乎并不意味着很多曲率,因此直线拟合会产生:
lm(dat[[4]]~dat[[3]])
Call:
lm(formula = dat[[4]] ~ dat[[3]])
Coefficients:
(Intercept) dat[[3]]
-2e-01 -7e-06
plot(dat[[3]],dat[[4]])
abline(coef(lm(dat[[4]]~dat[[3]])))
答案 1 :(得分:1)
我仍然不确定,你的图表应该如何。我会给出两个变种,但也许你可以提供一个模拟?
可能性1:
DF <- read.table(text="Category Price Volume_Band Elasticity
alpha $1 50,000 -0.5
beta $2 100,000 -1
gamma $3 200,000 -1.5
delta $4 250,000 -2",header=TRUE)
DF$Price <- as.numeric(gsub("\\$","",DF$Price))
DF$Volume_Band <- as.numeric(gsub(",","",DF$Volume_Band))
dx <- 0.2
dy <- dx*DF$Elasticity
DF$xstart <- DF$Price-dx
DF$xend <- DF$Price+dx
DF$ystart <- DF$Volume_Band-dy
DF$yend <- DF$Volume_Band+dy
library(ggplot2)
p1 <- ggplot(DF, aes(x=Price, y=Volume_Band)) +
geom_point() +
geom_segment(aes(x=xstart,y=ystart,xend=xend,yend=yend))
print(p1)
请注意,斜坡太小而无法看到。
可能性2:
p2 <- ggplot(DF, aes(x=Price, y=Volume_Band)) +
geom_point(aes(colour=Elasticity),size=3) +
scale_colour_gradient(high="black",low="red")
print(p2)