ขึ้นอยู่กับเป้าหมายของการวิเคราะห์ของคุณ วิธีปฏิบัติทั่วไปบางอย่างซึ่งบางอย่างถูกกล่าวถึงในลิงก์ของ whuber:
- การกำหนดมาตรฐานมักกระทำเมื่อตัวแปรที่ดำเนินการกับ PCA นั้นไม่ได้รับการวัดในระดับเดียวกัน โปรดทราบว่าการกำหนดมาตรฐานหมายถึงการกำหนดความสำคัญเท่าเทียมกันให้กับตัวแปรทั้งหมด
- หากพวกเขาไม่ได้วัดในระดับเดียวกันและคุณเลือกที่จะทำงานกับตัวแปรที่ไม่ได้มาตรฐานก็มักจะเป็นกรณีที่พีซีแต่ละเครื่องถูกครอบงำด้วยตัวแปรเดียวและคุณเพิ่งได้รับการเรียงลำดับของตัวแปรตามความแปรปรวนของพวกเขา (หนึ่งในการโหลดของแต่ละองค์ประกอบ (ต้น) จะใกล้กับ +1 หรือ -1)
- ทั้งสองวิธีมักจะนำไปสู่ผลลัพธ์ที่แตกต่างกันตามที่คุณมีประสบการณ์
ตัวอย่างที่ใช้งานง่าย:
สมมติว่าคุณมีสองตัวแปร: ความสูงของต้นไม้และเส้นรอบวงของต้นไม้เดียวกัน เราจะแปลงปริมาตรเป็นปัจจัย: ต้นไม้จะมีปริมาณสูงหากปริมาตรมากกว่า 20 ลูกบาศก์ฟุตและมีปริมาณต่ำ เราจะใช้ชุดข้อมูลต้นไม้ซึ่งโหลดไว้ล่วงหน้าใน R
>data(trees)
>tree.girth<-trees[,1]
>tree.height<-trees[,2]
>tree.vol<-as.factor(ifelse(trees[,3]>20,"high","low"))
ทีนี้สมมติว่าความสูงถูกวัดเป็นไมล์แทนที่จะเป็นฟุต
>tree.height<-tree.height/5280
>tree<-cbind(tree.height,tree.girth)
>
>#do the PCA
>tree.pca<-princomp(tree)
>summary(tree.pca)
Importance of components:
Comp.1 Comp.2
Standard deviation 3.0871086 1.014551e-03
Proportion of Variance 0.9999999 1.080050e-07
Cumulative Proportion 0.9999999 1.000000e+00
องค์ประกอบแรกอธิบายความแปรปรวนของข้อมูลได้เกือบ 100% โหลด:
> loadings(tree.pca)
Loadings:
Comp.1 Comp.2
tree.height -1
tree.girth 1
การประเมินผลกราฟิก:
>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))
เราเห็นว่าต้นไม้ที่มีปริมาตรสูงมักจะมีเส้นรอบวงต้นไม้สูง แต่ความสูงทั้งสามนั้นไม่ให้ข้อมูลใด ๆ กับปริมาตรต้นไม้ สิ่งนี้อาจผิดและผลที่ตามมาจากการวัดสองหน่วยที่แตกต่างกัน
เราสามารถใช้หน่วยเดียวกันหรือเราสามารถสร้างตัวแปรมาตรฐาน ฉันคาดหวังว่าทั้งสองจะนำไปสู่ภาพที่สมดุลมากขึ้นของความแปรปรวน แน่นอนในกรณีนี้เราสามารถยืนยันว่าตัวแปรควรมีหน่วยเดียวกัน แต่ไม่ได้มาตรฐานซึ่งอาจเป็นอาร์กิวเมนต์ที่ถูกต้องหากไม่ใช่เรากำลังวัดสองสิ่งที่แตกต่างกัน (เมื่อเราจะวัดน้ำหนักของต้นไม้และเส้นรอบวงของต้นไม้ขนาดที่ทั้งสองควรจะวัดได้ไม่ชัดเจนมากในกรณีนี้เรามีอาร์กิวเมนต์ที่ชัดเจนในการทำงานกับตัวแปรมาตรฐาน)
>tree.height<-tree.height*5280
>tree<-cbind(tree.height,tree.girth)
>
>#do the PCA
>tree.pca<-princomp(tree)
> summary(tree.pca)
Importance of components:
Comp.1 Comp.2
Standard deviation 6.5088696 2.5407042
Proportion of Variance 0.8677775 0.1322225
Cumulative Proportion 0.8677775 1.0000000
> loadings(tree.pca)
Loadings:
Comp.1 Comp.2
tree.height -0.956 0.293
tree.girth -0.293 -0.956
>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))
ตอนนี้เราเห็นว่าต้นไม้ที่สูงและมีเส้นรอบวงใหญ่มีปริมาณสูง (มุมซ้ายล่าง) เมื่อเปรียบเทียบกับเส้นรอบวงต่ำและความสูงต่ำสำหรับต้นไม้ที่มีปริมาณน้อย (มุมขวาบน) สิ่งนี้ทำให้รู้สึก
หากมองอย่างใกล้ชิดเราจะเห็นว่าความแตกต่างระหว่างระดับเสียงสูง / ต่ำมีความแข็งแกร่งที่สุดในทิศทางเส้นรอบวงและไม่อยู่ในทิศทางความสูง มาดูกันว่าจะเกิดอะไรขึ้นเมื่อเราสร้างมาตรฐาน:
>tree<-scale(tree,center=F,scale=T)
>tree.pca<-princomp(tree)
> summary(tree.pca)
Importance of components:
Comp.1 Comp.2
Standard deviation 0.2275561 0.06779544
Proportion of Variance 0.9184749 0.08152510
Cumulative Proportion 0.9184749 1.00000000
> loadings(tree.pca)
Loadings:
Comp.1 Comp.2
tree.height 0.203 -0.979
tree.girth 0.979 0.203
>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))
แท้จริงตอนนี้เส้นรอบวงอธิบายความแตกต่างส่วนใหญ่ในต้นไม้สูงและต่ำ! (ความยาวของลูกศรใน biplot นั้นบ่งบอกถึงความแปรปรวนในตัวแปรดั้งเดิม) ดังนั้นแม้ว่าสิ่งต่าง ๆ จะถูกวัดในระดับเดียวกันการทำให้เป็นมาตรฐานอาจมีประโยชน์ อาจไม่แนะนำให้ปรับมาตรฐานเมื่อเรายกตัวอย่างเช่นการเปรียบเทียบความยาวของต้นไม้ชนิดต่าง ๆ เพราะนี่เป็นการวัดเดียวกัน