これは解決策になる可能性があります:
require('deSolve')
conc <- data.frame(time <- c(0.16, 0.5, 1.0, 1.5, 2.0, 2.5, 3), concentration <- c(170, 122, 74, 45, 28, 17, 10))
##"Model" with differential equation
model <- function(t, C, k){
list(-k * C)
}
##Cost function with sum of squared residuals:
cost <- function(k){
c.start <- 170
out <- lsoda(c(C=c.start), conc$time, model, k)
c <- sum( (conc$concentration - out[,"C"])^2)
c
}
##Initial value for k
k <- 3
## Use some optimization procedure
opt <- optim(k, cost, method="Brent", lower=0, upper=10)
k.fitted <- opt$par
lsodaを使用することは、 1つの微分方程式だけで計算するには少しやり過ぎのように思われるので、多分それは少しナイーブです...しかし、それは確かにあなたのkを最適化します。統合のためにCの開始値を確認することをお勧めします。ここでは、170に設定しました。t= 0の値はありませんか?