我有几个非线性回归模型(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,既不是向量也不是矩阵。
答案 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