Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 因子与自变量乘积的线性回归_R_Lm - Fatal编程技术网

R 因子与自变量乘积的线性回归

R 因子与自变量乘积的线性回归,r,lm,R,Lm,我试图估算一个需求模型: d_t^k = a_t - b^k p_t^k + e_t^k 指数t表示周数,k表示产品编号。每种产品的需求取决于所有产品共享的一般季节性,是该周产品价格的仿射函数,加上一些正态随机误差 但是,如果我使用下面的lm函数调用,它会给我一个单一的价格系数b,而我想要的是每个产品的价格系数b^k^k 表达模型的正确方式是什么 lm(demand ~ factor(week) + factor(product) * price, data = df) 我猜上面的方法会奏效

我试图估算一个需求模型:

d_t^k = a_t - b^k p_t^k + e_t^k
指数t表示周数,k表示产品编号。每种产品的需求取决于所有产品共享的一般季节性,是该周产品价格的仿射函数,加上一些正态随机误差

但是,如果我使用下面的lm函数调用,它会给我一个单一的价格系数b,而我想要的是每个产品的价格系数b^k^k

表达模型的正确方式是什么

lm(demand ~ factor(week) + factor(product) * price, data = df)
我猜上面的方法会奏效,但我找不到任何文档来告诉我那里发生了什么

作为一个具体的例子,我有以下代码在一个稍微不同的需求模型上运行 d_t^k=a_t+a^k-b^k p_t^k+e_t^k

# Generate fake prices and sales, and estimate the coefficients of
# the demand model.

number.of.items <- 20 # Must be a multiple of 4
number.of.weeks <- 5
coeff.item.min <- 300
coeff.item.max <- 500
coeff.price.min <- 1.4
coeff.price.max <- 2
normal.sd <- 40
set.seed(200)

# Generate random coefficients for the items
coeff.item <- runif(number.of.items, coeff.item.min, coeff.item.max)
coeff.price <- runif(number.of.items, coeff.price.min, coeff.price.max)
coeff.week <- 50 * 1:number.of.weeks

# Row is item, column is week
week.id.matrix <- outer(rep(1, number.of.items), 1:number.of.weeks)
item.id.matrix <- outer(1:number.of.items, rep(1, number.of.weeks))
price.matrix <- rbind(
  outer(rep(1, number.of.items / 4), c(100, 100, 90, 90, 80)),
  outer(rep(1, number.of.items / 4), c(100, 90, 90, 80, 60)),
  outer(rep(1, number.of.items / 4), c(100, 85, 85, 60, 60)),
  outer(rep(1, number.of.items / 4), c(100, 75, 60, 45, 45))
)
coeff.week.matrix <- outer(rep(1, number.of.items), coeff.week)
coeff.price.matrix <- outer(coeff.price, rep(1, number.of.weeks))
coeff.item.matrix <- outer(coeff.item, rep(1, number.of.weeks))
sales.matrix <- coeff.week.matrix +
  coeff.item.matrix -
  coeff.price.matrix * price.matrix +
  matrix(rnorm(number.of.weeks * number.of.items, 0, normal.sd),
         number.of.items, number.of.weeks)


df <- data.frame(item = factor(as.vector(item.id.matrix)),
                 week = factor(as.vector(week.id.matrix)),
                 price = as.vector(price.matrix),
                 sales = as.vector(sales.matrix))

model <- lm(sales ~ week + item + price, data = df)
model <- lm(sales ~ week + item + factor(item) * price, data = df)

print(summary(model))

在做了一些实验之后,似乎

lm(demand ~ factor(week) + factor(product) * price, data = df)
确实有效

我不知道为什么我以前没想到它会起作用

lm(demand ~ factor(week) + factor(product) * price, data = df)