在R里进行线性拟合时,如果强迫拟合直线过某一点?
多谢
多谢
lm( c(y,b) ~ rbind(x,a) )
或者使用linear contrast 的办法,比如glht(multcomp)x=seq(0,10,0.1)
y=y=6*x+7+runif(101,min=-1,max=1)
a=2
b=19
lm( c(y,b) ~ rbind(x,a) )
会出现错误信息library(quadprog)
lmconst <- function(y,x,x0,y0){
x = cbind(1,x)
n = dim(x)
p = x[2]
n = n[1]
beta = rep(0,)
A = matrix(c(1,x0),ncol=1)
b0 = y0
Dmat = t(x)%*%x
dvec = t(x) %*% y
coef = solve.QP(Dmat, dvec, A, bvec = y0, meq=1)$solution
names(coef)[1] = "Intercept"
coef
}
x=seq(0,10,0.1)
y = matrix(6*x+7+runif(101,min=-1,max=1),ncol=1)
x=matrix(x,ncol=1)
re = lmconst(y,x,2,19)
re
re[1]+2*re[2]
x = matrix(runif(100),ncol=2)
y = x%*%c(6,2)+1 + rnorm(50)
re = lmconst(y,x,c(2,1),15)
re
re[1]+2*re[2]+re[3]
假设这个不是楼主作业,数值解如上。