2016-09-20 175 views
2

我想用一个连续因变量(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) 
+0

基准价wou ld是特征1,1,1的价格。即每个变量的最低因子值。如果你使用'glm'模型,这就是R作为基线的原因。请参考您的示例:您将如何为没有尺寸和没有屏幕的手机定义价格?人们通常会以最低规格的电话作为基准。 – niczky12

+0

@ niczky12可能并不那么简单。我相信通过这个逻辑,基准价格是-278.7348,而不是499. –

+0

需要说明的是,在你的模型中,所有N个观测值只有一个基准价格? –

回答

0

我认为你可以做这样的如果你知道你的因素基本层

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") 

resulting plot

+0

由于'y'和'y_Base'非常接近(我认为这可能是模拟中的一个错误),所以我不确定这是否是一个共同事件,但是当我运行这个时,预测的基数('predbase')一个平均值(501.3)与最终价格(501.9)几乎相同,而不是基准价格(512.3)。 –

+0

'y'和'y_Base'根本没有关闭。我不确定你为什么专注于平均值。 AFAIU的目标是获得每个观察的基础奖。 – Roland

+0

@魏永旺我不明白“恒基奖”的含义。是不是每个观察的基本奖的目标? – Roland