我有一个要拟合双线性模型的数据集。但是,我也希望找到过渡点的理由。
我想遍历过渡点的可能值,使用dplyr :: filter()分离数据,然后将线性模型拟合到2个新数据集中。
在此之后,我认为我可以为两个线性模型计算R平方值的总和。然后,我将选择R平方值总和最高的过渡点。我希望这将为两个线性模型提供最佳的平均拟合过渡点。
...但是,当我运行以下代码时,出现以下错误:
错误:
'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)
}
此示例包含伪数据,但我认为它描述了我的问题。 任何帮助表示赞赏。