waveform data
#Copyright(c) Hiroshi Tashiro #waveform data(p240) h1=function(j){ return(max(6-abs(j-11),0)) } h2=function(j){ return(h1(j-4)) } h3=function(j){ return(h1(j+4)) } epsilon=rnorm(21,0,1) epsilon class1=matrix(,nrow=21,ncol=100) for(i in 1:100){ for(j in 1:21){ class1[j,i]=runif(1,0,1)*h1(j)+(1-runif(1,0,1))*h2(j)+epsilon[j] } j=1 } class1 class2=matrix(,nrow=21,ncol=100) for(i in 1:100){ for(j in 1:21){ class2[j,i]=runif(1,0,1)*h1(j)+(1-runif(1,0,1))*h3(j)+epsilon[j] } j=1 } class3=matrix(,nrow=21,ncol=100) for(i in 1:100){ for(j in 1:21){ class3[j,i]=runif(1,0,1)*h2(j)+(1-runif(1,0,1))*h3(j)+epsilon[j] } j=1 } X=cbind(class1,class2,class3) X#data n=300 colSums(X) #標本平均ベクトル(sample mean) Xvar=function(X){ return((1/n)*rowSums(X)) } xvar=Xvar(X) xvar #sample varience covariance matrix #matrix(1:4,nrow=2,ncol=2)+matrix(2:5,nrow=2,ncol=2) S=matrix(0,nrow=21,ncol=21) S for(i in 1:n){ S=S+(X[,i]-xvar)%*%t(X[,i]-xvar) } #i=1 #(X[,i]-xvar)%*%t(X[,i]-xvar) #X[,i] #(X[i,]-xvar) S=(1/n)*S #c(1:3)%*%t(c(1:3))#3*3 S#21*21 eigen(S) #eigen1 eigen(S)$values[1] w1=eigen(S)$vectors[,1] eigen(S)$values[2] w2=eigen(S)$vectors[,2] #pc1 y1=matrix(0,nrow=1,ncol=300) for(i in 1:300){ y1[,i]=t(w1)%*%X[,i] } y1 #pc2 y2=matrix(0,nrow=1,ncol=300) for(i in 1:300){ y2[,i]=t(w2)%*%X[,i] } y2 plot(y1[1:100], y2[1:100], xlim=c(-11,11),ylim=c(-4,11),col="red",main="waveform data") points(y1[101:200], y2[101:200], xlim=c(-11,11),ylim=c(-4,11),col="blue") points(y1[201:300], y2[201:300], xlim=c(-11,11),ylim=c(-4,11),col="green")
waveform data
ちょっと、密集しすぎてないか?