ls=function(y,x)
{
if(ncol(x)<=1)
{n=length(y)
sxx=sum((x-mean(x))^2)
sxy=sum((x-mean(x))*(y-mean(y)))
b1=sxy/sxx
b0=mean(y)-b1*mean(x)
yf=b0+b1*x
sse=sum((y-yf)^2)
sst=sum((y-mean(y))^2)
ssr=sst-sse
fc=sse/(n-2)
sdb0=sqrt(fc)*sqrt(1/n+mean(x)^2/sxx)
sdb1=sqrt(fc)/sqrt(sxx)
t0=b0/sdb0
t1=b1/sdb1
R2=ssr/sst
F=ssr*(n-2)/sse
list(b0=b0,b1=b1,sd0=sdb0,sd1=sdb1,t0=t0,t1=t1,R2=R2,F=F)}
else{
n=length(y)
c=rep(1,n)
x=cbind(c,x)
k=ncol(x)
A=solve(t(x)%*%x)
B=solve(t(x)%*%x)*(t(x)%*%y)
yf=x%*%B
e=y-yf
sse=t(e)%*%e
sst=sum((y-mean(y))^2)
ssr=sst-sse
fc=sse/(n-k)
sdb=sqrt(fc)*sqrt(diag(A))
t=B/sdb
R2=ssr/sst
F=(ssr/(k-1))/(sse/(n-k))
list(b=B,t=t,R2=R2,F=F)}
}
x=t(x)
ls(y,t(x))
本人编的程序,希望有用。