几种模型的确定系数

时间:2014-04-09 23:30:01

标签: r cycle nls

我有几个非线性回归模型(nls)保存为a1,a2,...,a_n。我想得到一个相关的确定系数的向量。

E.g。

y <- c(1.0385, 1.0195, 1.0176)
x <- c(3,4,5)
data <- data.frame(x,y)
b1 <- function(x,a,b) {a/b^x}
b2 <- function(x,a,b) {a^b^x}
a1 <- nls(y ~ b1(x,a,b), data = data, start = c(a=0.9, b=0.6))
a2 <- nls(y ~ b2(x,a,b), data = data, start = c(a=0.9, b=0.6))

我可以使用

获得两种检测系数
a <- sum(residuals(a1)^2)
b <- sum((y - mean(y))^2)
1 - (a/b)
#[1] 0.8198396
a <- sum(residuals(a2)^2)
b <- sum((y - mean(y))^2)
1 - (a/b)
#[1] 0.9066859

但如果我说20个型号怎么办?

我尝试使用一个循环for,这对我来说不起作用,因为类是nls,既不是向量也不是矩阵。

1 个答案:

答案 0 :(得分:2)

使用所有结果中的list,然后对其应用函数:

results <- list(a1,a2)

b <- sum((y - mean(y))^2) 
1 - (sapply(results,function(x) sum(residuals(x)^2) ) / b )
#[1] 0.8198396 0.9066859