###################################################################### # # Compute R^2 by Reggression Model of convergence mesurements # ³»°øº¯À§ÀÇ È¸±ÍºÐ¼® ¸ðµ¨¿¡ µû¸¥ °¢ ¸ðµ¨ÀÇ ÀûÇÕµµ °è»ê ½ºÅ©¸³Æ® # ¿ÀÀü 1:03 2004-06-14, by Kenial (Kenial at shinbiro dot com) # ###################################################################### #################################################### # »ùÇà µ¥ÀÌÅÍ ·Îµå # (x,t,cÀÇ Å×À̺í ÇüÅ·Πµé¾î ÀÖÀ½) #tunnel <- read.table("d:\\sample\\data1\\8.txt", TRUE); tunnel <- read.table("d:\\tunnel.txt", TRUE); # divide-by-conquer¸¦ ½ÃµµÇÒ °ªÀÇ ´Ü°è # ÃÖÀú°ª¿¡¼­ ÃÖ´ë°ª±îÁö levelsÀÇ ´Ü°è¸¦ ¸¸µç´Ù. levels <- 10; # °á°ú µ¥ÀÌÅÍÀÇ °Ç¼ö data_length = length(tunnel[["c"]]) # °á°úÀÇ Æò±Õ°ª r_mean = mean( tunnel[["c"]] ) # °á°úÀÇ Sum of Squares Total(SST) sst <- 0; for (j in 1:data_length) { sst <- sst + ( ( tunnel[["c"]][j] - r_mean)^2 ); } ##################################################################### # 1.1's parameter : a, b, c0 ##################################################################### # ÆĶó¸ÞÅÍ ÃʱⰪ ¼¼Æà a <- NULL; temp <- 7.55 - 3.05; # max - min for( i in 1:levels) { a[i] <- (temp/(levels-1))*(i-1) + 3.05; } b <- NULL; temp <- 0.058 - 0.035; # max - min for( i in 1:levels) { b[i] <- (temp/(levels-1)*(i-1)) + 0.035; } c0 <- NULL; temp <- 2.43 - 0.13; # max - min for( i in 1:levels) { c0[i] <- (temp/(levels-1))*(i-1) + 0.13; } ########################################### # 1.1 ¸ðµ¨ model <- c ~ (( 1 - exp( -B * x ) ) * A ) - C0; # 1.1ÀÇ °á°ú¸¦ ´ãÀ» ¸®½ºÆ® »ý¼º ft1 <- NULL; r_square1 <- NULL; # Nonlinear Regression ½ÃÀÛ for(i in 1:levels) { # ÆĶó¹ÌÅÍ °ª ¼¼Æà paramlist <- list(A = a[i], B = b[i], C0 = c0[i] ); # Process try( ft1[[i]] <- nls( model, data = tunnel, start = paramlist), TRUE); # Get R^2 = 1-(ssr/sst) try( (r_square1[[i]] = 1 - ( deviance(ft1[[i]]) / sst ) ), TRUE); } ##################################################################### # 1.2's parameter : a, b, c0 ##################################################################### # ÆĶó¸ÞÅÍ ÃʱⰪ ¼¼Æà a <- NULL; temp <- 7.08 - 3.08; # max - min for( i in 1:levels) { a[i] <- (temp/(levels-1))*(i-1) + 3.05; } b <- NULL; temp <- 0.03 - 0.01; # max - min for( i in 1:levels) { b[i] <- (temp/(levels-1)*(i-1)) + 0.035; } c0 <- NULL; temp <- 1.24 - (-0.002); # max - min for( i in 1:levels) { c0[i] <- (temp/(levels-1)*(i-1)) + (-0.002); } ########################################### # 1.2 ¸ðµ¨ model <- c ~ (( 1 - exp( -B * t ) ) * A ) - C0; # 1.2ÀÇ °á°ú¸¦ ´ãÀ» ¸®½ºÆ® »ý¼º ft1_2 <- NULL; r_square1_2 <- NULL; # Nonlinear Regression ½ÃÀÛ for(i in 1:levels) { # ÆĶó¹ÌÅÍ °ª ¼¼Æà paramlist <- list(A = a[i], B = b[i], C0 = c0[i] ); # Process try( ft1_2[[i]] <- nls( model, data = tunnel, start = paramlist), TRUE); # Get R^2 = 1-(ssr/sst) try( (r_square1_2[[i]] = 1 - ( deviance(ft1_2[[i]]) / sst )), TRUE); } ##################################################################### # 1.2b's parameter : a, b, c0 ##################################################################### # ÆĶó¸ÞÅÍ ÃʱⰪ ¼¼Æà a <- NULL; temp <- 16.76 - 4.94; # max - min for( i in 1:levels) { a[i] <- (temp/(levels-1))*(i-1) + 4.94; } b <- NULL; temp <- 0.52 - 0.11; # max - min for( i in 1:levels) { b[i] <- (temp/(levels-1)*(i-1)) + 0.11; } c0 <- NULL; temp <- 8.18 - (-1.34); # max - min for( i in 1:levels) { c0[i] <- (temp/(levels-1)*(i-1)) + (-1.34); } ########################################### # 1.2b ¸ðµ¨ model <- c ~ (( 1 - exp( -B * t ) ) * A ) - C0; # 1.2ÀÇ °á°ú¸¦ ´ãÀ» ¸®½ºÆ® »ý¼º ft1_2_b <- NULL; r_square1_2_b <- NULL; # Nonlinear Regression ½ÃÀÛ for(i in 1:levels) { # ÆĶó¹ÌÅÍ °ª ¼¼Æà paramlist <- list(A = a[i], B = b[i], C0 = c0[i] ); # Process try( ft1_2_b[[i]] <- nls( model, data = tunnel, start = paramlist), TRUE); # Get R^2 = 1-(ssr/sst) try( (r_square1_2_b[[i]] = 1 - ( deviance(ft1_2_b[[i]]) / sst )), TRUE); } ##################################################################### # 2's parameter : a, b, c0 ##################################################################### # ÆĶó¸ÞÅÍ ÃʱⰪ ¼¼Æà a <- NULL; temp <- 10 - 1; # max - min for( i in 1:levels) { a[i] <- (temp/(levels-1))*(i-1) + 1; } b <- NULL; temp <- 10 - 1; # max - min for( i in 1:levels) { b[i] <- (temp/(levels-1)*(i-1)) + 1; } c0 <- NULL; temp <- 10 - (-1); # max - min for( i in 1:levels) { c0[i] <- (temp/(levels-1)*(i-1)) + (-1); } ########################################### # 2. ¸ðµ¨ model <- c ~ ( A * log(1 + (B*t)) ) - C0; # 2ÀÇ °á°ú¸¦ ´ãÀ» ¸®½ºÆ® »ý¼º ft2 <- NULL; r_square2 <- NULL; # Nonlinear Regression ½ÃÀÛ for(i in 1:levels) { # ÆĶó¹ÌÅÍ °ª ¼¼Æà paramlist <- list(A = a[i], B = b[i], C0 = c0[i] ); # Process try( ft2[[i]] <- nls( model, data = tunnel, start = paramlist), TRUE); # Get R^2 = 1-(ssr/sst) try( (r_square2[[i]] = 1 - ( deviance(ft2[[i]]) / sst )), TRUE); } ##################################################################### # 3's parameter : cx, Xx, c0 ##################################################################### # ÆĶó¸ÞÅÍ ÃʱⰪ ¼¼Æà cx <- NULL; temp <- 9.1 - 3.59; # max - min for( i in 1:levels) { cx[i] <- (temp/(levels-1))*(i-1) + 3.59; } Xx <- NULL; temp <- 46.9 - 24.9; # max - min for( i in 1:levels) { Xx[i] <- (temp/(levels-1)*(i-1)) + 24.9; } c0 <- NULL; temp <- 3.46 - 0.39; # max - min for( i in 1:levels) { c0[i] <- (temp/(levels-1)*(i-1)) + 0.39; } ########################################### # 3. ¸ðµ¨ model <- c ~ ( Cx * ( 1 - ( ( XX / ( XX + x ) ) ** 2 ) ) ) - C0; # 3ÀÇ °á°ú¸¦ ´ãÀ» ¸®½ºÆ® »ý¼º ft3 <- NULL; r_square3 <- NULL; # Nonlinear Regression ½ÃÀÛ for(i in 1:levels) { # ÆĶó¹ÌÅÍ °ª ¼¼Æà paramlist <- list(Cx = cx[i], XX = Xx[i], C0 = c0[i] ); # Process try( ft3[[i]] <- nls( model, data = tunnel, start = paramlist), TRUE); # Get R^2 = 1-(ssr/sst) try( (r_square3[[i]] = 1 - ( deviance(ft3[[i]]) / sst )), TRUE); } ##################################################################### # 4's parameter : a,b,c,d,c0 ##################################################################### # ÆĶó¸ÞÅÍ ÃʱⰪ ¼¼Æà a <- NULL; temp <- 7.55 - 3.05; # max - min for( i in 1:levels) { a[i] <- (temp/(levels-1))*(i-1) + 3.05; } b <- NULL; temp <- 0.058 - 0.035; # max - min for( i in 1:levels) { b[i] <- (temp/(levels-1))*(i-1) + 0.035; } c <- NULL; temp <- 11.92 - 4.01; # max - min for( i in 1:levels) { c[i] <- (temp/(levels-1))*(i-1) + 4.01; } d <- NULL; temp <- 0.28 - 0.06; # max - min for( i in 1:levels) { d[i] <- (temp/(levels-1))*(i-1) + 0.06; } c0 <- NULL; temp <- 3.57 - (-0.61); # max - min for( i in 1:levels) { c0[i] <- (temp/(levels-1)*(i-1)) + (-0.61); } ########################################### # 4. ¸ðµ¨ model <- c ~ A * (1 - exp(-B * x)) + C * (1 - exp(-D * t)) - C0; # 4ÀÇ °á°ú¸¦ ´ãÀ» ¸®½ºÆ® ft4 <- NULL; r_square4 <- NULL; # Nonlinear Regression ½ÃÀÛ for(i in 1:levels) { # ÆĶó¹ÌÅÍ °ª ¼¼Æà paramlist <- list(A = a[i], B = b[i], C = c[i], D = d[i], C0 = c0[i] ) # Process try(ft4[[i]] <- nls( model, data = tunnel, start = paramlist),TRUE); # Get R^2 = 1-(ssr/sst) try((r_square4[[i]] = 1 - ( deviance(ft4[[i]]) / sst )), TRUE); } ##################################################################### # 5's parameter : cx,Xx,m,Tt,c0 ##################################################################### # ÆĶó¸ÞÅÍ ÃʱⰪ ¼¼Æà cx <- NULL; temp <- 14.5 - 9.4; # max - min for( i in 1:levels) { cx[i] <- (temp/(levels-1))*(i-1) + 9.4; } Xx <- NULL; temp <- 7.3 - 3.5; # max - min for( i in 1:levels) { Xx[i] <- (temp/(levels-1)*(i-1)) + 3.5; } Tt <- NULL; temp <- 1.15 - 0.15; # max - min for( i in 1:levels) { Tt[i] <- (temp/(levels-1))*(i-1) + 0.15; } m <- NULL; temp <- 7.1 - 3.8; # max - min for( i in 1:levels) { m[i] <- (temp/(levels-1))*(i-1) + 3.8; } c0 <- NULL; temp <- 32 - 14.4; # max - min for( i in 1:levels) { c0[i] <- (temp/(levels-1)*(i-1)) + 14.4; } ########################################### # 5. ¸ðµ¨ model <- c ~ Cx*(1- ( (XX/(XX+x)) **2 )) * (1+ M*(1-((TT/(TT+t))**0.3))) - C0; # 5ÀÇ °á°ú¸¦ ´ãÀ» ¸®½ºÆ® ft5 <- NULL; r_square5 <- NULL; # Nonlinear Regression ½ÃÀÛ for(i in 1:levels) { # ÆĶó¹ÌÅÍ °ª ¼¼Æà paramlist <- list(Cx = cx[i], XX = Xx[i], M = m[i], TT = Tt[i], C0 = c0[i] ); # Process try( ft5[[i]] <- nls( model, data = tunnel, start = paramlist), TRUE); # Get R^2 = 1-(ssr/sst) try( (r_square5[[i]] = 1 - ( deviance(ft5[[i]]) / sst )), TRUE); } ft1 ft1_2 ft1_2_b ft2 ft3 ft4 ft5 r_square1 r_square1_2 r_square1_2_b r_square2 r_square3 r_square4 r_square5 min(r_square1) max(r_square1) min(r_square1_2) max(r_square1_2) min(r_square1_2_b) max(r_square1_2_b) min(r_square2) max(r_square2) min(r_square3) max(r_square3) min(r_square4) max(r_square4) min(r_square5) max(r_square5) i=100 paramlist <- list(A = a[i], B = b[i], C0 = c0[i] ); testnls <- nls( model, data = tunnel, start = paramlist); r_mean = mean( tunnel[["c"]] ) sst <- 0; for (i in 1:13) { sst <- sst + ( ( tunnel[["c"]][i] - r_mean)^2 ); } r_square = 1 - ( deviance(testnls) / sst ) for(i in 1:5) { print(resid(ft1[[i]])) }