1

nls と自己開始オプション ssLogis を使用して、ロジスティック曲線をフィッティングする関数を作成しようとしています。私はいくつかのデータを持っています - それは実際にはデータフレームとして来ます.

int <- c(.1, .2, .5, .8, 1.5, 2.5, 4.1, 6.1, 8.8, 13.8, 25.5, 29.2, 35, 37.9, 41.4)
yr2 <- 1:15
newdata <- data.frame(int, yr2)

それで、私が書いた関数に - Fox & Weisbergの助けを借りて...

log.fit <- function(dep, ind, yourdata){
#Self-starting...
log.ss <- nls(dep ~ SSlogis(ind, phi1, phi2, phi3), data=yourdata)

#C
C <- summary(log.ss)$coef[1]
#a
A <-  exp((summary(log.ss)$coef[2]) * (1/summary(log.ss)$coef[3]))
#k
K <- (1 / summary(log.ss)$coef[3])

plot(dep ~ ind, data=yourdata, main = "Logistic Function", xlab=ind, ylab=dep)
with(data, lines(seq(0, max(ind), 1), predict(log.ss, data.frame(ind=seq(0,max(ind),1)))))

p <- (yourdata$ind)
m <- mean(p)

r1 <- sum((p-m)^2)
r2 <- sum(residuals(log.ss)^2)

r_sq <- (r1-r2) / r1
R <- sqrt(r_sq)

return(c(C=C, a=A, k=K, R.value=R))
}

これでブロックから抜け出して、残りの関数コードが問題ないかどうかを確認することさえできません...関数を実行するとエラーが発生します。

log.fit(int, yr2, newdata)

次に、次のエラーが表示されます。

Error in SSlogis(ind, phi1, phi2, phi3) : object 'phi2' not found

phi2はssLogisで推定されるパラメータなので迷っています。これは、関数の外でチャンピオンのように実行されます。

4

1 に答える 1

1

あなたが言及したエラーを再現できません。R の最新バージョンに更新し、使用しているパッケージも最新であることを確認することをお勧めします。ただし、コードには次の 2 つのエラーがあります。

with( your data, lines(seq(0, max(ind), 1), predict(log.ss, data.frame(ind=seq(0,max(ind),1)))))

p <- (あなたのデータ $in t )

2 番目の修正では、実際に int 変数の経験的分散を計算したいことを確認してください。

于 2013-08-23T18:33:16.197 に答える