Вывести Основной компонент в функционал PCA - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь найти способ найти собственную функцию по собственным значениям. Насколько я понимаю из чтения, я должен умножить собственные значения на что-то, чтобы получить главные компоненты в функциональной PCA. Но какой алгоритм это сделать? Я могу найти собственные значения, но я не знаю, как найти PCA из этого собственного значения.

`

#To derive the data
Data <- readMat("C:\\Users\\syeda\\Desktop\\Reserach PhD\\Data\\gait.mat")
#To separate Knee variable
kne<-Data$knee
t20 <- seq(0.025,0.975,len=20)
#To plot the raw data after standardization
matplot(t20,kne,type="l",xlab="time",ylab="Knee")
#Derive the finer time grid using 200 equispaced points
t <- seq(0.025,0.975,len=200)
#To derive knots
knt <- seq(0.025,0.975,len=7)
#To exclude the boundary points
knt <- knt[2:length(knt)-1]
#Derive the basis function
Phi <- bs(x=t,knots=knt,degree=3,intercept = FALSE,
          Boundary.knots = range(t))
plot(t,Phi[,1], type="l")
#To plot all the phi with finer time grid at once
#Spline smoothers of the sample curves on a finer time grid
pl<-ggplot(data=data.frame(Phi)) + geom_line(aes(x=t,y=Phi[,1]
)) + geom_line(aes(x=t,y=Phi[,2]))+geom_line(aes(x=t,y=Phi[,3]
))+geom_line(aes(x=t,y=Phi[,4]))+geom_line(aes(x=t,y=Phi[,5]
))+geom_line(aes(x=t,y=Phi[,6]))+geom_line(aes(x=t,y=Phi[,7]
))+geom_line(aes(x=t,y=Phi[,8]))+geom_line(aes(x=t,y=Phi[,9]))


#Time points to estimate values to draw the sample curve
#To Derive Bspline/basis function
Phi1 <- bs(t20,knots=knt,degree=3,intercept = FALSE,
           Boundary.knots = range(t))
beta1 <-(ginv( t(Phi1)%*%Phi1))%*%(t(Phi1)%*%kne) #parameter
x_hat <- Phi%*%beta1 #Estimated value
#To plot the estimated value
matplot(t,x_hat,type="l",xlab="time",ylab="X_hat")

#Question1
#Part a
#PCA

#To derive the covariance matrix
xx<-cov(t(x_hat)) # Since the position of knee is random variable, so I use transpose
#but not using transpose also giving the zero determinant
det(xx)
eig<-eigen(xx)
plot(1:200,eigen(xx)$values)




`

(я использую R studio)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...