Как получить результаты от NLS - PullRequest
2 голосов
/ 26 марта 2020

Мои данные следующие:

df<-read.table (text=" cup size
12  30.76923077
13  38.46153846
14  53.84615385
15  76.92307692
16  92.30769231
17  100", header=TRUE)

Я использовал следующие коды для получения результатов

y=as.vector(df$cup)
x=as.vector(df$size)
fit <- nls(1/y ~ 1 + exp(-b*(x-c)), start = list(b = 0.01, c = 12), alg = "plinear")

Я хочу извлечь значения b, c, .lin отдельно вот так:

b= 0.01552
c= 5.98258
lin= 0.04887

Я использовал fit [[2]], но у меня это не работает.

Ответы [ 2 ]

2 голосов
/ 26 марта 2020

Это должно работать:

df<-read.table (text=" cup size
12  30.76923077
13  38.46153846
14  53.84615385
15  76.92307692
16  92.30769231
17  100", header=TRUE)

y=as.vector(df$cup)
x=as.vector(df$size)
fit <- nls(1/y ~ 1 + exp(-b*(x-c)), start = list(b = 0.01, c = 12), alg = "plinear")
myvector <- coef(fit)
b <- myvector[1]
c <- myvector[2]
lin <- myvector[3]
2 голосов
/ 26 марта 2020

Как предлагает @ user20650, coef - это функция, используемая для извлечения значений из модели.

Если вы обратитесь к исходному коду , вы увидите, что он скрыт в элементе m в функции getAllPars()

fit$m$getAllPars()
         b          c       .lin 
0.01552340 5.98262729 0.04887368 
...