1

我有一个数据集,我想拟合一个双线性模型。但是,我也想找一些理由来找到过渡点。

我想遍历转换点的可能值,使用 dplyr::filter() 分离数据,然后将单独的线性模型拟合到 2 个新数据集。

在此之后,我认为我可以计算两个线性模型的 R 平方值之和。然后,我将选择具有最大 R 平方值之和的过渡点。我希望这将为 2 个线性模型提供最佳平均拟合的过渡点。

...但是,当我运行以下代码时出现以下错误:

错误:

'lm.fit(x,y,offset = offset,singular.ok =singular.ok,...)中的错误:0(非 NA)案例'

代码:

simpleTable<-data.frame(a=rep('group 1',10),
b=c(1,2,2.5,3,3.5,4.5,5,7,8,10),
c=c(8,15,18,19,22,24,25,29,31,35))

DF<- data.frame(k=1, Rsq.total=0); 
for (k in seq(from=0, to=10, by=0.1)){

  for (j in seq(from=1, to=length(simpleTable$a), by=1)){
    if(simpleTable$b[j]<=k){
      simpleTable$b1[j]<-simpleTable$b[j]; simpleTable$b2[j]<-0
    } else {simpleTable$b1[j]<-0; simpleTable$b2[j]<-simpleTable$b[j]}
  }

  simpleTable.1<-simpleTable %>% dplyr::filter(simpleTable$b1 != 0)
  simpleTable.2<-simpleTable %>% dplyr::filter(simpleTable$b2 != 0)

  LinMod.1<-lm(c ~ b1, data=simpleTable.1); Rsq.1<-summary(LinMod.1)$r.squared
  LinMod.2<-lm(c ~ b2, data=simpleTable.2); Rsq.2<-summary(LinMod.2)$r.squared

  Rsq.total<-Rsq.1+Rsq.2
  newRow<-data.frame(k, Rsq.total); DF<-rbind(DF, newRow)

}  

这个例子是虚拟数据,但我认为它描述了我的问题。任何帮助表示赞赏。

4

0 回答 0