R 乘法回归

R 乘法回归,r,non-linear-regression,R,Non Linear Regression,我试图在一个包含一个连续因变量(y)和三个分类自变量(x1,x2,x3)的数据集上估计回归模型。例如,假设y是智能手机的价格,x是三个功能(比如颜色、大小和存储空间) 我的假设是,每个特性代表一个相对于(未知)基准价格的乘数。因此,如果你的手机的基准价格是100,那么红色会使价格增加25%,大尺寸会减少50%,高存储空间会增加75%。这意味着手机的最终价格为100 x(1+0.25)x(1-0.50)x(1+0.75)=109.375 问题是,我只知道最终价格(而不是基准价格)和各个功能。我如何

我试图在一个包含一个连续因变量(y)和三个分类自变量(x1,x2,x3)的数据集上估计回归模型。例如,假设y是智能手机的价格,x是三个功能(比如颜色、大小和存储空间)

我的假设是,每个特性代表一个相对于(未知)基准价格的乘数。因此,如果你的手机的基准价格是100,那么红色会使价格增加25%,大尺寸会减少50%,高存储空间会增加75%。这意味着手机的最终价格为100 x(1+0.25)x(1-0.50)x(1+0.75)=109.375

问题是,我只知道最终价格(而不是基准价格)和各个功能。我如何估计伴随这些特征的乘法因子?我在下面的R中写了一个简短的模拟来说明这个问题

谢谢你的帮助

迈克尔

x_fun   <- function() {
    tmp1                <- runif(N)
    tmp2                <- cut(tmp1, quantile(tmp1, probs=c(0, 1/3, 2/3, 3/3)))
    levels(tmp2)        <- seq(1:length(levels(tmp2)))
    tmp2[is.na(tmp2)]   <- 1
    as.factor(tmp2)}

N       <- 1000

x1      <- x_fun()
x2      <- x_fun()
x3      <- x_fun()

f1      <- 1+0.25*(as.numeric(x1)-2)
f2      <- 1+0.50*(as.numeric(x2)-2)
f3      <- 1+0.75*(as.numeric(x3)-2)

y_Base  <- runif(min=0, max=1000, N)
y       <- y_Base*f1*f2*f3

output  <- data.frame(y, x1, x2, x3)
rm(y_Base, f1, f2, f3, N, y, x_fun, x1, x2, x3)

xu-fun如果你知道你的因素的基本水平,我想你可以这样做

N       <- 1000
set.seed(42)
x1      <- x_fun()
x2      <- x_fun()
x3      <- x_fun()

f1      <- 1+0.25*(as.numeric(x1)-2)
f2      <- 1+0.50*(as.numeric(x2)-2)
f3      <- 1+0.75*(as.numeric(x3)-2)

y_Base  <- runif(min=0, max=1000, N)
y       <- y_Base*f1*f2*f3

str(x1)

output  <- data.frame(y, x1, x2, x3)
#rm(y_Base, f1, f2, f3, N, y, x_fun, x1, x2, x3)


output[, c("x1", "x2", "x3")] <- lapply(output[, c("x1", "x2", "x3")], relevel, ref = "2")

fit <- glm(y ~ x1 + x2 + x3, data = output, family = gaussian(link = "log"))
summary(fit)
predbase <- exp(log(output$y) - predict(fit, type = "link") + coef(fit)["(Intercept)"])


library(ggplot2)
ggplot(data.frame(x = y_Base, y = predbase, output[, c("x1", "x2", "x3")]),
       aes(x = x, y = y)) +
  geom_point() +
  facet_wrap( ~ x1 + x2 + x3) +
  geom_abline(slope = 1, color = "dark red")

N基准价格将是具有功能1,1,1的价格。即每个变量的最小因子值。如果您使用
glm
模型,这也是R作为基线的内容。请参考您的示例:对于没有尺寸和屏幕的手机,您将如何定义价格?人们通常以规格最低的手机为基准。@niczky12可能没那么简单。我相信根据这个逻辑,基本价格是-278.7348,而不是499。只是想澄清一下,在您的模型中,所有N个观测值是否只有一个基价?@WeihuangWong我认为基价是变量
y_base
从0到1000,平均值约为500。我不确定这是否设置正确-
y_base
的平均值不应该显著低于
y
的平均值吗?似乎
y
的范围更大,但平均值相等(+/-很小的随机变化)。我不确定这是否是一个共同关联,因为
y
y_Base
非常接近(我认为这可能是模拟中的一个错误),但当我运行这个时,预测的基数(
predbase
)有一个平均值(501.3)这与最终价格(501.9)几乎相同,而不是基价(512.3)。
y
y\u base
根本不接近。我不知道你为什么把重点放在平均值上。阿福,目标是每次观察都获得基本奖。@WeihuangWong我不明白你所说的“持续基本奖”是什么意思。我们的目标不是要获得每次观察的基本奖励吗?通过“不接近”,你是说相对于产品属性的影响,512不接近500??难道你不希望基本价格(而不是奖品、价格)低于最终价格吗?为什么你的预测是指最终价格而不是基准价格?就像我说的,基础价格和最终价格不应该几乎相同,根据定义,基础价格必须更低。另外,这估计的是最终价格而不是底价。@Hack-R我不理解你的反对意见,最后一句话完全错了。比较这些:
输出[521,];y_基地[521];predbase[521]