如何在R中执行多个线性回归函数(如lm)以拟合预测规则y = cx ^ a_1x ^ b_2,(其中x1和x2是属性,a,b,c是参数,y是预测标签)我的训练集包括观察((xi,1,xi,2),yi),i = 1,...,n,yi都是正数?
答案 0 :(得分:3)
阅读你的等式非常困难,但如果你的意思是:
y = c×x 1 a ×x 2 b
然后你有(至少)两个选择:
lm(...)
公式:log(y) ~ log(x1) + log(x2)
。这将生成截距(log(c)
)的估计,以及log(x1)
和log(x2)
(分别为a和b)的系数。这种方法存在风险,因为它依赖于响应(在这种情况下为log(y)
)具有常量方差的正常错误。如果y
中的误差在常数方差下是正常的,则log(y)
中的误差将不会出现,因此您必须仔细检查残差Q-Q图以查看是否符合该约束。例如,
fit = nls(y ~ c*x1^a*x2^b, data=mydata, start=c(a=1, b=1, c=1))
nls(...)
的问题在于,如果a,b和c(此处为1,1,1)的初始估计值与最佳拟合值相差太远,则可能无法收敛。一般来说,我会建议对这类问题进行非线性回归。