• R语言
  • 求助:模型拟合(一元多项次)

请教有关模型拟合问题:
<br />
j<-1<br />
  for(i in unique(merge.data$inter))   <br />
  { <br />
    temp<-merge.data[merge.data$inter==i,c("R","M")]  <br />
    x<-temp$M<br />
    y<-temp$R<br />
    <br />
    temp.lm<-lm(y~x+I(x^2)) #quadratic fit model<br />
 <br />
    a<-coef(temp.lm)[[3]]# Quadratic coefficients<br />
    b<-coef(temp.lm)[[2]]<br />
    c<-coef(temp.lm)[[1]]<br />
    rsq<-summary(temp.lm)$r.squared   <br />
    ma<--b/(2*a)<br />
 <br />
    inter<-strsplit(i,"#")[[1]]<br />
    names(inter)<-c("lot_id","wafer_id","diex","diey","prmod","cellOrientation","implantType","misalignLayer")<br />
    inter<-t(data.frame(inter))<br />
    temp.MA<-data.frame(A=a,B=b,C=c,RSQ=rsq,MA=ma,inter)<br />
 <br />
      for ( k in (1:length(temp$R)))<br />
      {<br />
         temp.mis<-data.frame(temp[k,1])<br />
         names(temp.mis)<-temp[k,2]<br />
         if (k==1) {mis<-temp.mis} else {mis<-cbind(mis,temp.mis)}<br />
      }<br />
    temp.MA<-cbind(mis,temp.MA)    <br />
 <br />
   if (j==1){MA.RAW<-temp.MA} else {MA.RAW<-rbind(MA.RAW,temp.MA)} <br />
  j<-j+1 <br />
 }<br />
<br />




目的:从merge.data数据框中求当inter为某一值时,提取R和M两列数据,进行一元二项次拟合,求y为最小值时的x值,并且删除rsq小于某值的数据。



问题:由于原数据量大,需要大约10~15分钟的时间才能算完,请教是否有更加合理的拟合运算?
请大侠们指教,是否有运算速度更快的线性拟和语句
using matrix manipulations directly should be much faster.
[quote]引用第2楼rtist2007-08-31 05:06发表的“”:

using matrix manipulations directly should be much faster.[/quote]



The raw data implored from csv.file with huge amount. and i make a loop to explore what i need.



How can i chage the data.frame to matrix?



is.data.frame(inter)

TRUE



as.matrix(inter)



is.data.frame(inter)

TRUE # inter still is a data.frame