การวิเคราะห์คลัสเตอร์ด้วยเดซี่

ฉันกำลังพยายามทำการวิเคราะห์คลัสเตอร์แบบลำดับชั้นด้วย RStudio โดยใช้แพ็คเกจ daisy นี่คือชุดข้อมูลของฉัน:

data.frame':341 obs. of  28 variables:
$ Impo_Env : Ord.factor w/ 3 levels "Low"<"Med"<"High": 3 2 3 2 3 2 3 3 2 3 ...
$ ComparativePriority_IAS: Ord.factor w/ 3 levels "Low"<"Med"<"High": 3 1 3 2 3 2 3 2 3 2 ...
$ Strategy_Eradication: Ord.factor w/ 3 levels "No intervention"<..: 3 2 3 2 3 2 3 2 2 3 ...
$ Knowl_BiodivLoss: Factor w/ 2 levels "0","1": 2 1 2 2 2 1 2 2 2 2 ...
$ Control_Trade: Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
$ Engagement_Retail: Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
$ Knowl_PastProj: Factor w/ 2 levels "0","1": 1 1 1 1 2 1 1 1 2 1 ...
$ Priority_IAS: Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
$ Knowl_Eradic: Factor w/ 2 levels "0","1": 2 1 2 1 2 2 1 2 2 1 ...
$ Alert_CFS: Factor w/ 2 levels "0","1": 1 2 1 2 1 2 2 1 2 1 ...
$ Alert_Municipality: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
$ Alert_Park: Factor w/ 2 levels "0","1": 2 1 2 1 2 1 1 2 1 1 ...
$ Alert_Police: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
$ Alert_Firemen: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 2 ...
$ Supp_AuthorityIAS: Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
$ Knowl_Env: Factor w/ 2 levels "0","1": 2 1 2 2 2 2 2 2 2 2 ...
$ Info_Tv: Factor w/ 2 levels "0","1": 2 2 1 2 2 2 2 1 2 1 ...
$ Info_Web: Factor w/ 2 levels "0","1": 2 1 2 2 2 1 2 1 2 2 ...
$ Info_Radio: Factor w/ 2 levels "0","1": 1 1 1 1 1 2 1 2 1 1 ...
$ Info_Magazines: Factor w/ 2 levels "0","1": 1 1 2 1 2 1 1 2 1 1 ...
$ Info_School: Factor w/ 2 levels "0","1": 1 1 2 1 1 1 1 1 1 2 ...
$ Blacklist: Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
$ Workshop: Factor w/ 2 levels "0","1": 1 1 2 1 2 1 2 2 1 1 ...
$ SuppFin_FutProj: Factor w/ 2 levels "0","1": 2 1 2 1 2 2 2 2 2 2 ...
$ Tourist_dummy: Factor w/ 2 levels "0","1": 1 1 1 2 2 1 1 1 2 1 ...
$ Gender: Factor w/ 2 levels "Female","Male": 1 2 1 2 1 1 2 2 2 1 ...
$ logIASknown: num  2.89 2.94 2.89 2.56 3.14 ...
$ Age: int  20 41 14 10 26 33 19 59 23 16 ...

ฉันต้องการใช้ระยะแบบยุคลิดกับ daisy แต่เมื่อวิ่ง

daisy(fuu, metric = c("euclidean"), type=list(ordratio = c(1,2,3), asymm=c(4:24), symm=c(25,26)))

เอาท์พุตไม่ดีเลย ระยะทางของโกเวอร์ใช้แทนระยะทางแบบยุคลิด:

ข้อความเตือน:ในเดซี่(fuu, metric = c("euclidean") ให้พิมพ์ = list(ordratio = c(1,:with ตัวแปรผสม ระบบเมตริก "gower" จะถูกใช้โดยอัตโนมัติ

ฉันจะแก้ไขได้อย่างไร?


person user8780    schedule 10.02.2016    source แหล่งที่มา


คำตอบ (1)


ตามที่อธิบายไว้ในส่วน "รายละเอียด" ภายในเอกสารประกอบของฟังก์ชันเดซี่ที่มีอยู่ในแพ็คเกจคลัสเตอร์:

การจัดการข้อมูลไบนารีที่ระบุ ลำดับ และ (a) สมมาตรทำได้โดยใช้สัมประสิทธิ์ความแตกต่างทั่วไปของ Gower (1971) หาก x มีคอลัมน์ใดๆ ของประเภทข้อมูลเหล่านี้ ทั้งเมตริกอาร์กิวเมนต์และจุดยืนจะถูกละเว้น และค่าสัมประสิทธิ์ของ Gower จะถูกนำมาใช้เป็นเมตริก

กล่าวอีกนัยหนึ่ง สำหรับการคำนวณหน่วยเมตริกยุคคลิด (ระยะทางเป็นผลรวมรากกำลังสองของความแตกต่าง) คอลัมน์อินพุตจะต้องเป็นตัวแปรตัวเลข (โหมด) (นั่นคือ คอลัมน์ทั้งหมดเมื่อ x เป็นเมทริกซ์) และด้วยเหตุนี้จึงรับรู้ว่าเป็นตัวแปรที่ปรับขนาดตามช่วงเวลา ตรงข้ามกับตัวแปร nominal (คอลัมน์ของคลาสแฟคเตอร์) หรือตัวแปร ordinal (คอลัมน์ของคลาสที่เรียงลำดับ) การระบุประเภทตัวแปรภายใน ประเภทอาร์กิวเมนต์ จะไม่เปลี่ยนแปลงข้อเท็จจริงนี้

ภายใต้สถานที่เหล่านี้ และสมมติว่ามันสมเหตุสมผลสำหรับตัวแปรทั้ง 28 ตัวของคุณ แม้ว่าบางตัวจะเป็นไบนารีเชิงคุณภาพก็ตาม คุณอาจลองแปลงพวกมันด้วย as.numeric แล้วดำเนินการต่อ เหตุผลก็คือ: ที่มีตัวแปรผสม เมตริก "gower" แทนที่เป็น ใช้โดยอัตโนมัติ

person Ana Maria Mendes-Pereira    schedule 22.02.2016
comment
การแปลง as.numeric ที่แนะนำของตัวแปรเชิงคุณภาพมีไว้สำหรับปัจจัยไบนารี่ที่เดซี่ยอมรับเพื่อคำนวณระยะทางยุคลิด ซึ่งมิฉะนั้นจะจัดการโดยวิธีโกเวอร์ - person Ana Maria Mendes-Pereira; 02.06.2016