r - 如何手动设置线性模型中变量的系数?

标签 r linear-regression lm

这个问题在这里已经有了答案:





Set one or more of coefficients to a specific integer

(1 个回答)


4年前关闭。




在 R 中,我如何才能 为特定变量设置权重 而不是 lm() 中的观察值功能?

上下文如下。我正在尝试为特定产品(例如手机)构建个人排名系统。我可以基于价格作为因变量和其他特征(如屏幕大小、内存、操作系统等)作为自变量构建线性模型。然后我可以用它来预测手机的实际成本(而不是声明的价格),从而找到最佳的价格/优势系数。这是我已经做的。

现在我要 “突出”部分功能 只对我很重要。例如,我可能需要一个大内存的手机,因此我想给它更高的权重,以便线性模型针对内存变量进行优化。
lm() R 中的函数有 weights参数,但这些是观察的权重而不是变量(如果这是错误的,请纠正我)。我也尝试过使用公式,但只有解释器错误。有没有办法在 lm() 中合并变量的权重? ?

当然,lm()功能不是唯一的选择。如果您知道如何使用其他类似的解决方案(例如 glm() ),这也很好。

更新。 经过几次评论后,我明白我思考问题的方式是错误的。线性模型,通过调用 lm() 获得, 给出了训练示例的最佳系数,并且没有办法(也没有必要)改变变量的权重,对不起,我造成了混淆。我实际上正在寻找的是更改现有线性模型中的系数以手动使某些参数比其他参数更重要的方法。继续前面的例子,假设我们有以下价格公式:

price = 300 + 30 * memory + 56 * screen_size + 12 * os_android + 9 * os_win8

该公式描述了价格和手机参数之间相关性的最佳线性模型。但是,现在我想手动更改 memory 前面的数字 30变量,比如说,60,所以它变成:
price = 300 + 60 * memory + 56 * screen_size + 12 * os_android + 9 * os_win8

当然,这个公式不再反射(reflect)价格和手机参数之间的最佳关系。此外,因变量不显示实际价格,只是一些善良的值(value),考虑到内存对我来说比对普通人重要两倍(基于第一个公式的系数)。但是这种善良的值(value)(或更准确地说,分数 goodness/price 的值(value))正是我所需要的——有了这个,我可以找到最好的(在我看来)价格最优惠的手机。

希望这一切都是有道理的。现在我有一个(可能很简单)的问题。我该怎么办 在现有线性模型中手动设置系数 ,通过 lm() 获得?也就是说,我正在寻找类似的东西:
coef(model)[2] <- 60

这段代码当然不起作用,但你应该明白这个想法。注意:显然可以将 memory 中的值加倍数据框中的列,但我正在寻找更优雅的解决方案,影响模型,而不是数据。

最佳答案

看起来您正在进行优化,而不是模型拟合(尽管模型拟合中可以进行优化)。你可能想要类似 optim 的东西函数或查看线性或二次规划( linprogquadprog 包)。

如果你坚持使用 lm 之类的建模工具然后使用 offset公式中的参数来指定您自己的乘数而不是计算乘数。

关于r - 如何手动设置线性模型中变量的系数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12323859/

相关文章:

gnuplot - 使用 Gnuplot 进行时间序列的线性回归

r - 如何使用聚类协方差矩阵对回归系数进行线性假设检验?

R:无法预测具体值

RODBC查询调整

r 中带有重叠圆圈(填充和大小)的行列热图

r - R 中稀疏矩阵的向量化逐元素除法

python - Python 中的简单感知器

r - 对称直方图

r - 将元素添加到 R 中的调用对象