ポイント(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の式を取得できますか?
ポイント(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の式を取得できますか?
データを取得してプロットします。
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)
結果:
データを構築します。
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
爆破の信頼区間が存在するため)、注意が必要です ...