差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
dm:2012 [2012/07/26 08:47] – [強度関数を変えてみる] watalu | dm:2012 [不明な日付] (現在) – 外部編集 (不明な日付) 127.0.0.1 | ||
---|---|---|---|
行 434: | 行 434: | ||
</ | </ | ||
+ | === テスト用コード === | ||
+ | |||
+ | 下記のコードを走らせて、エラーが出なければ、 | ||
+ | |||
+ | * データの読み込み | ||
+ | * 必要なライブラリのインストール | ||
+ | |||
+ | が完了していて、準備は整っていることが確認できる。 | ||
+ | |||
+ | < | ||
+ | plot(software.debugging$t, | ||
+ | | ||
+ | | ||
+ | library(gam) | ||
+ | software.debugging.gam <- gam(Nt~-1+bs(t), | ||
+ | data=software.debugging) | ||
+ | plot(software.debugging.gam, | ||
+ | | ||
+ | points(software.debugging$t, | ||
+ | | ||
+ | n <- dim(software.debugging)[1] | ||
+ | software.debugging.diff <- data.frame(t=software.debugging$t[2: | ||
+ | t.diff=software.debugging$t[2: | ||
+ | Nt.diff=software.debugging$Nt[2: | ||
+ | Ct.diff=software.debugging$Ct[2: | ||
+ | software.debugging.diff$dCt <- software.debugging.diff$Ct.diff/ | ||
+ | software.debugging.diff$dNt <- software.debugging.diff$Nt.diff/ | ||
+ | software.debugging.diff <- rbind(c(0, | ||
+ | lambda.t <- function(theta, | ||
+ | diff.1 <- (exp(-theta*data$t[j-1])-exp(-theta*data$t[j])) | ||
+ | diff.2 <- (alpha+beta*sum(data$Ct.diff[1: | ||
+ | return(diff.1*diff.2) | ||
+ | } | ||
+ | neg.log.lik <- function(x) { | ||
+ | theta <- x[1] | ||
+ | alpha <- x[2] | ||
+ | beta <- x[3] | ||
+ | J <- dim(software.debugging.diff)[1] | ||
+ | log.lik.temp <- 0 | ||
+ | for( j in c(2:J) ) { | ||
+ | lambda.j <- lambda.t(theta, | ||
+ | log.lik.temp <- log.lik.temp - lambda.j | ||
+ | log.lik.temp <- log.lik.temp + software.debugging.diff$Nt.diff[j]*log(lambda.j) | ||
+ | } | ||
+ | return(-log.lik.temp) | ||
+ | } | ||
+ | fitted <- optim(c(0.001, | ||
+ | print(fitted) | ||
+ | </ | ||
=== まずは不具合発見数の成長を眺める === | === まずは不具合発見数の成長を眺める === | ||
行 785: | 行 834: | ||
他にないか、頑張ってみて。 | 他にないか、頑張ってみて。 | ||
- | === テスト用コード === | ||
- | < | ||
- | software.debugging.diff <- data.frame(t=software.debugging$t[2: | ||
- | t.diff=software.debugging$t[2: | ||
- | Nt.diff=software.debugging$Nt[2: | ||
- | Ct.diff=software.debugging$Ct[2: | ||
- | software.debugging.diff$dCt <- software.debugging.diff$Ct.diff/ | ||
- | software.debugging.diff$dNt <- software.debugging.diff$Nt.diff/ | ||
- | software.debugging.diff <- rbind(c(0, | ||
- | lambda.t <- function(theta, | ||
- | diff.1 <- (exp(-theta*data$t[j-1])-exp(-theta*data$t[j])) | ||
- | diff.2 <- (alpha+beta*sum(data$Ct.diff[1: | ||
- | return(diff.1*diff.2) | ||
- | } | ||
- | neg.log.lik <- function(x) { | ||
- | theta <- x[1] | ||
- | alpha <- x[2] | ||
- | beta <- x[3] | ||
- | J <- dim(software.debugging.diff)[1] | ||
- | log.lik.temp <- 0 | ||
- | for( j in c(2:J) ) { | ||
- | lambda.j <- lambda.t(theta, | ||
- | log.lik.temp <- log.lik.temp - lambda.j | ||
- | log.lik.temp <- log.lik.temp + software.debugging.diff$Nt.diff[j]*log(lambda.j) | ||
- | } | ||
- | return(-log.lik.temp) | ||
- | } | ||
- | fitted <- optim(c(0.001, | ||
- | print(fitted) | ||
- | </ | ||