резултатите не се генерират от princomp, не може да се генерира двоен график

Имам проблеми с princomp, по-специално biplot, когато искам да използвам ковариационна или корелационна матрица, която не е генерирана от самия princomp. За простота ще използвам много по-малък набор от данни от този, с който се занимавам.

cr <- cov.wt(USArrests)
biplot(princomp(data = USArrests, covmat = cr))

дава ми грешката

Error in biplot.princomp(princomp(data = USArrests, covmat = cr)) : 
  object 'princomp(data = USArrests, covmat = cr)' has no scores

Изглежда, че тук се случва нещо просто, но досега Google не е бил полезен.


r pca
person user1423020    schedule 11.09.2013    source източник
comment
› cr ‹- cw.wt(USArrests) Грешка: не може да се намери функция cw.wt   -  person IRTFM    schedule 12.09.2013
comment
Това е печатна грешка. Трябваше да бъде cov.wt(). Извинения.   -  person user1423020    schedule 12.09.2013


Отговори (1)


Аргументът data в princomp може да се използва само от „S3 метода за клас „формула““. Следователно трябва да посочите вашето princomp повикване по един от тези два начина:

cr <- cov.wt(USArrests)
pr1 <- princomp(x = USArrests, covmat = cr)
pr2 <- princomp(formula = ~ ., data = USArrests, covmat = cr)

biplot(pr1)
biplot(pr2)
person Henrik    schedule 12.09.2013
comment
Това е перфектно. Благодаря ти! Реших, че е нещо толкова просто, но се чувствах като да се взирате в стената за известно време. - person user1423020; 12.09.2013
comment
Въпреки че все още имам проблеми с работата с NA в моя набор от данни. Princomp изглежда не обича да взема изхода от cor() или cov(), а само cov.wt(). - person user1423020; 12.09.2013