-3

ポイント(6,72)(211,183)(808,360)(200,440)に当てはめる式y = x /(a + b * x)があります。私はそれらを使用してRに入れました

x <- c(6,211,808,200)
y <- c(72,183,360,440)

ここで、上記で定義した関数をこれらの点に当てはめるように当てはめ、aとbを見つけます。(Rを使用して)aとbを取得するにはどうすればよいですか?そして、どうすればRの式を取得できますか?

4

2 に答える 2

2

データを取得してプロットします。

x <- c(6,211,808,200)
y <- c(72,183,360,440)
plot(x,y,pch=19)

関数を定義し、係数を取得します

f <- function(x,a,b) {x/(a+b*x)}
fit <- nls(y ~ f(x,a,b), start=c(a=1,b=1))
co <- coef(fit)
# co will contain your coefficients for a and b
#          a           b 
#0.070221853 0.002796513 

そして離れてプロット:

curve(f(x, a=co["a"], b=co["b"]), add = TRUE, col="green", lwd=2)

結果:

ここに画像の説明を入力

于 2013-02-26T14:03:13.540 に答える
2

データを構築します。

x <- c(6,211,808,200)
y <- c(72,183,360,440)
d <- data.frame(x,y)

データをプロットします。まばらですが、正気ではありません (増加/飽和パターンの証拠を示しています)。

plot(y~x,data=d)

モデルを適合させる:

## y = x/(a+b*x)
## 1/y = a/x + b
m1 <- glm(y~I(1/x),family=gaussian(link="inverse"),data=d)

結果をプロットできますggplot

library("ggplot2")
qplot(x,y,data=d)+theme_bw()+
    geom_smooth(method="glm",family=gaussian(link="inverse"),
                formula=y~I(1/x),se=FALSE)

このモデルの信頼区間はいくぶんクレイジーです (信頼区間に1/yはゼロが含まれており、その時点でy爆破の信頼区間が存在するため)、注意が必要です ...

于 2013-02-26T14:21:20.707 に答える