我有两个矩阵。一个包含客户购买产品的数量。矩阵看起来像这个量化矩阵:

另一个包含客户购买产品的单位价格。矩阵看起来就像这个价格矩阵:

如何对矩阵进行线性回归,从而获得每个乘积的斜率?
发布于 2020-06-10 21:16:37
你的数据:
quantity <- matrix(c(4,2,6, 9,4,3, 1,1,2, 3,1,5), 3, 4)
price <- matrix(c(1,0.5,8, 4.2,1.2,2, 2,5,2, 1,2.5,1), 3, 4)首先,您必须将两个矩阵转换为一个数据框架。(如果你愿意的话,你可以避免这样做,但我认为这样做会让你更直截了当):
df <- data.frame(quantity = as.numeric(quantity),
price = as.numeric(price),
product = rep(1:4, each = 3), ID = 1:3)然后,按组运行线性模型:
lms <- by(df, df$product, FUN = function(x) lm(price~quantity, data = x)) 找出斜坡:
slopes <- sapply(lms, coef)[2,]但是,如果您想保持原始矩阵的原状,则可以运行一个简单的循环:
slopes <- numeric(dim(price)[2])
for (i in 1:dim(price)[2]) {
model <- lm(price[,i]~quantity[,i])
slopes[i] <- coef(model)[2]
}注:这个解假设这两个矩阵有相同的维数。
如果您想避免循环,下面的解决方案可能会更快:
f <- function(x,y) coef(lm(y~x))[2]
l <- function(m) lapply(seq_len(ncol(m)), function(i) m[,i])
mapply(f, l(quantity), l(price))https://stackoverflow.com/questions/62312601
复制相似问题