INFINITY -数学とかプログラミングとか-

統計とプログラムを使って役に立たせたい

TeX用コマンド入力を支援するための辞書をご利用ください。
sanctuary's blogは,適当なことが書いてあります。

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

f:id:infinity_th4:20111230124034j:image


ちょっと、密集しすぎてないか?

f:id:infinity_th4:20120202053939j:image

f:id:infinity_th4:20120202053940j:image