2016-09-20 174 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