未分類

install.packages(“DoE.base”)

install.packages(“DoE.base”)

library(DoE.base)

library(lattice)

library(latticeExtra)

 
 

# =============================================================================(

 
 

plot.summaly <- function(a, df, df.mean, …){

x.lab <- df.mean[[a]]$label

# xy plot

plot.default(df[[a]], df$x, xaxt = “n”, ann = FALSE, …)

par(new = TRUE)

plot.default(df.mean[[a]]$label, df.mean[[a]]$x,

ylab = “x”, xlab = a,

xaxt = “n”,

type = “l”, col = “red”,

…)

 

axis(side = 1, at = x.lab, labels = levels(x.lab))

 

# boxplot

boxplot(formula(sprintf(“x~%s”, a)), data = df, …)

}

 
 

plot.Interaction <- function(a, x.df, …){

 

f00 <- function(a, x.list, y, add.flg = FALSE, …){

f01 <- function(x, y, a, data.list, …){

list.name <- names(data.list)

legend.lab <- list.name

pchs = rep(1, length(legend.lab))

ltys = rep(“b”, length(legend.lab))

for(i in list.name){

order.z <- order(data.list[[i]][[x]])

df <- data.list[[i]][order.z,]

x.lab <- df[[x]]

main.lab <- paste(a, x, sep = ” – “)

if(rev(list.name)[1] == i){

plot.default(df[[x]], df[[y]], col = df[[a]],

ylab = y, xlab = x, main = main.lab,

xaxt = “n”,

…)

 

} else {

plot.default(df[[x]], df[[y]], col = df[[a]],

xaxt = “n”, ann = FALSE, …)

 

par(new = add.flg)

}

 

if(!add.flg){

axis(side = 1, at = x.lab, labels = levels(x.lab))

legend(“topleft”, legend = legend.lab, col = (1:length(legend.lab)),

pch = pchs, #lty = ltys,

bg = “transparent”)

}

 

}

 

if(add.flg){

# if(levels(x.lab)[1] == “D1”){

# browser()

# }

x.lab <- df[[x]]

axis(side = 1, at = x.lab, labels = levels(x.lab))

legend(“topleft”, legend = legend.lab, col = (1:length(legend.lab)),

pch = pchs, #lty = ltys,

bg = “transparent”)

}

TRUE

}

x.list2 <- x.list[[a]]

tg.x <- names(x.list2[[1]])

z <- grep(paste(c(a, y), collapse = “|”), tg.x)

lapply(tg.x[-z], f01, y, a, x.list2, …)

 

}

 

s.df <- lapply(a, function(a, x){split(x, x[[a]])}, x.df)

names(s.df) <- a

lapply(a, f00, s.df, “x”, ylim = c(0, 0.5), type = “b”, …)

}

 
 

cal.LSD <- function(tg.f, data.aov, a = 0.05, tg.x = “x”){

f.lsd <- function(n.comb, n, v.value, t.value){

((1/n[n.comb][1]) + (1/n[n.comb][2]) * v.value)^(1/2) * t.value

}

 

f.delta <- function(n.comb, x){

rtn <- data.frame(x[n.comb][1] – x[n.comb][2])

names(rtn) <- paste(names(x)[n.comb][1], names(x)[n.comb][2], sep = ” “)

row.names(rtn) <- NULL

rtn

}

 

 
 

 

aov.sum <- summary(data.aov)[[1]]

tg.data <- data.aov$model[[tg.f]]

 

if(is.null(tg.data)){

print(sprintf(“error : 対象の要素がNULLです。(tg.f : %s)”, tg.f))

return(NA)

}

lv <- levels(tg.data)

lv.comb <- combn(length(lv),2)

z <- length(row.names(aov.sum)[[1]])

n <-table(tg.data)

e.tValue <- abs(qt(a/2, aov.sum[[“Df”]][z]))

x.mean <- tapply(data.aov$model[[tg.x]], data.aov$model[[tg.f]], mean)

x.lsd <- apply(lv.comb, 2, f.lsd, n, aov.sum[[“Mean Sq”]][z], e.tValue)

names(x.lsd) <- names(x.mean)

x.delta.0 <- apply(lv.comb, 2,

function(n.comb, x){x[n.comb][1] – x[n.comb][2]},

x.mean)

names(x.delta.0) <- apply(lv.comb, 2,

function(n.comb, x){paste(x[n.comb][1], x[n.comb][2], sep = ” – “)},

names(x.mean))

 

x.delta <- as.data.frame(apply(lv.comb, 2, f.delta, x.mean))

# as.data.frame後にnamesに含まれる“-““.”に置き換わるのでgsub()再置換する。

names(x.delta) <- gsub(“[.]”, ” – “, names(x.delta))

# ————————————————————————-

 

print(“(Residuals)”)

print(sprintf(“factor : %s”, paste(lv, collapse = “, “)))

#print(sprintf(“factor : %s”, lv))

print(” – mean -“)

print(x.mean)

print(sprintf(“t-Value : %s”, round(e.tValue, 3)))

print(” – L.S.D -“)

print(x.lsd)

print(” – delta – “)

print(x.delta)

#print(x.delta.0)

rtn <- list()

rtn$factor <- lv

rtn$n <- n

rtn$mean <- x.mean

rtn$lsd <- x.lsd

rtn$delta <- x.delta

rtn

}

 
 

# =============================================================================

 
 

old.wd <- getwd()

setwd(“/Documents/R”)

 
 

# L9(3^4)の直行表を読み込む

show.oas(nruns=9, parents.only=FALSE)

oaTableL9 <- oa.design(ID=L9.3.4, randomize=FALSE)

print(oaTableL9)

 
 

x <- read.csv(“L9_data.csv”,

header = TRUE,

stringsAsFactors = FALSE)

x.data.info <- read.csv(“L9_data_factor_levels.csv”,

header = TRUE,

stringsAsFactors = FALSE)

 
 

# C因子について実験データの割付を直行表にあわせる。

data.frame(“直行表割付水準 = as.integer(oaTableL9.org$C),

実験データの水準” = c(1, 2, 3, 2, 3, 1, 3, 1, 2))

 
 

# 23を入れ替える。

x.data.info$C <- x.data.info$C[c(1,3,2)]

x.data.info$C

 
 

 
 

x.data <- cbind(oaTableL9, x = x$x)

 
 

# x.data.2<- data.frame(

# A = c(sprintf(“A%s”, as.character(x.data$A))),

# B = c(sprintf(“B%s”, as.character(x.data$B))),

# C = c(sprintf(“C%s”, as.character(x.data$C))),

# D = c(sprintf(“D%s”, as.character(x.data$D))),

# x = x.data$x)

 
 

x.data.header <- names(x.data)

z <- (x.data.header != “x”)

 
 

x.data.2 <- data.frame(

as.data.frame(

lapply(x.data.header[z],

function(a, x){paste(a, x[[a]], sep = “”)},

x.data)),

x.data$x)

 
 

x.data.2.mean <- lapply(x.data.header[z],

function(a, x){x <- tapply(x$x, x[[a]], mean); data.frame(x.mean = c(x), label = names(x))},

x.data.2)

 
 

names(x.data.2.mean) <- x.data.header[z]

print(x.data.2.mean)

 
 

 
 

#

old.par <- par(mfcol=c(2,length(x.data.header[z])))

lapply(x.data.header[z],

plot.summaly,

x.data.2, x.data.2.mean, ylim = c(0, 0.5))

par(old.par)

 
 

# 交互作用確認(Interaction)

#

# —————————————————————————

# old.par <- par(mfcol=c(3,3))

# plot.Interaction(“A”, x.data.2, add.flg = TRUE)

# par(old.par)

# for nextを利用してplotするとparによる複数レイアウトができないので

# layout()を使ってplotを配置する。

# layout(matrix(seq(3), rep(1, 3)), 1, 3)

p.mat <- matrix(seq(12), ncol = 3, nrow = 4, byrow = TRUE)

layout(p.mat,

widths = rep.int(1, ncol(p.mat)),

heights = rep.int(1, nrow(p.mat)))

plot.Interaction(x.data.header[-5], x.data.2, add.flg = TRUE)

# —————————————————————————

 
 

 
 

 
 

# 分散分析

result.aov <- aov(x ~ A + B + C, data = x.data)

summary(result.aov)

tapply(x.data$x, x.data$A, mean)

 
 

result.2.aov <- aov(x ~ A + B + C, data = x.data.2)

summary(result.2.aov)

# 誤差分散よりも値が小さいBの要素をプーリング

result.2.aov.2 <- aov(x ~ A + C, data = x.data.2)

summary(result.2.aov.2)

 
 

# 最小有意差:LSD(Least Significant Difference)を求める

#cal.LSD(“A”, result.2.aov, “A1”, “A2”)

result.lsd <- lapply(x.data.header[c(1,3)], cal.LSD, result.2.aov.2)

# lapply(x.data.header[z][4], cal.LSD, result.2.aov)

# debug(cal.LSD)

names(result.lsd) <- x.data.header[c(1,3)]

 
 

result.lm <- lm(x ~ A + B + C, data = x.data)

summary.lm(result.lm)

 
 

result.lm.2 <- lm(x ~ A + B + C, data = x.data.2)

summary.lm(result.lm.2)

コメントを残す