指数曲線  $Y=ab^X$     Last modified: Sep 08, 2009


例題

 「表 1 のに示すようなデータに曲線をあてはめなさい。」

表 1.テストデータ
X 1 2 3 4 5 6 7 8 9 10
Y 3.000 4.500 6.750 10.125 15.188 22.781 34.172 51.258 76.887 115.330


プログラム:
# quartz(width=500/72, height=350/72)
x <- 1:10
y <- c(3, 4.5, 6.75, 10.125, 15.188, 22.781, 34.172, 51.258, 76.887, 115.33)
dat <- data.frame(x=x, y=y)
ans <- nls(y ~ a*b^x, data=dat, start=list(a=1, b=1)) # 非線形最小二乗法による解
summary(ans)
plot(x, y, pch=19, col="red")
x2 <- seq(1, 10, by=0.01)
y2 <- predict(ans, newdata=data.frame(x=x2))
lines(x2, y2, col="blue")

実行例:
> x <- 1:10
> y <- c(3, 4.5, 6.75, 10.125, 15.188, 22.781, 34.172, 51.258, 76.887, 115.33)
> dat <- data.frame(x=x, y=y)
> ans <- nls(y ~ a*b^x, data=dat, start=list(a=1, b=1)) # 非線形最小二乗法による解
> summary(ans)

Formula: y ~ a * b^x

Parameters:
   Estimate Std. Error t value Pr(>|t|)    
a 2.000e+00  2.118e-05   94445   <2e-16 ***
b 1.500e+00  1.712e-06  876380   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.0002096 on 8 degrees of freedom

Number of iterations to convergence: 8 
Achieved convergence tolerance: 1.262e-07 

> plot(x, y, pch=19, col="red")
> x2 <- seq(1, 10, by=0.01)
> y2 <- predict(ans, newdata=data.frame(x=x2))
> lines(x2, y2, col="blue")
fig
・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI