วิธีการคำนวณความสัมพันธ์ใน r ด้วยค่าที่หายไป
คุณสามารถใช้วิธีการต่อไปนี้เพื่อคำนวณค่าสัมประสิทธิ์สหสัมพันธ์ใน R เมื่อตัวแปรตั้งแต่หนึ่งตัวขึ้นไปมีค่าที่ขาดหายไป:
วิธีที่ 1: คำนวณค่าสัมประสิทธิ์สหสัมพันธ์โดยมีค่าที่หายไป
cor(x, y, use=' complete.obs ')
วิธีที่ 2: คำนวณเมทริกซ์สหสัมพันธ์โดยมีค่าที่หายไป
cor(df, use=' pairwise.complete.obs ')
ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติ
ตัวอย่างที่ 1: คำนวณค่าสัมประสิทธิ์สหสัมพันธ์โดยมีค่าที่หายไป
สมมติว่าเรากำลังพยายามใช้ฟังก์ชัน cor() เพื่อคำนวณค่าสัมประสิทธิ์สหสัมพันธ์แบบเพียร์สันระหว่างตัวแปรสองตัวเมื่อมีค่าที่หายไป:
#create two variables
x <- c(70, 78, 90, 87, 84, NA, 91, 74, 83, 85)
y <- c(90, NA, 79, 86, 84, 83, 88, 92, 76, 75)
#attempt to calculate correlation coefficient between x and y
cor(x, y)
[1] NA
ฟังก์ชัน cor() ส่งคืน NA เนื่องจากเราไม่ได้ระบุวิธีจัดการกับค่าที่หายไป
เพื่อหลีกเลี่ยงปัญหานี้ เราสามารถใช้อาร์กิวเมนต์ use=’complete.obs’ เพื่อให้ R รู้ว่าจะใช้เฉพาะการสังเกตแบบคู่เมื่อมีทั้งสองค่าอยู่:
#create two variables
x <- c(70, 78, 90, 87, 84, NA, 91, 74, 83, 85)
y <- c(90, NA, 79, 86, 84, 83, 88, 92, 76, 75)
#calculate correlation coefficient between x and y
cor(x, y, use=' complete.obs ')
[1] -0.4888749
ค่าสัมประสิทธิ์สหสัมพันธ์ระหว่างตัวแปรทั้งสองกลายเป็น -0.488749
โปรดทราบว่าฟังก์ชัน cor() ใช้เฉพาะทั้งสองชุดค่าผสมโดยมีค่าอยู่เมื่อคำนวณค่าสัมประสิทธิ์สหสัมพันธ์
ตัวอย่างที่ 2: คำนวณเมทริกซ์สหสัมพันธ์ที่มีค่าที่ขาดหายไป
สมมติว่าเรากำลังพยายามใช้ฟังก์ชัน cor() เพื่อสร้าง เมทริกซ์สหสัมพันธ์ สำหรับกรอบข้อมูลที่มีตัวแปรสามตัวเมื่อมีค่าที่หายไป:
#create data frame with some missing values
df <- data. frame (x=c(70, 78, 90, 87, 84, NA, 91, 74, 83, 85),
y=c(90, NA, 79, 86, 84, 83, 88, 92, 76, 75),
z=c(57, 57, 58, 59, 60, 78, 81, 83, NA, 90))
#attempt to create correlation matrix for variables in data frame
cor(df)
X Y Z
x 1 NA NA
y NA 1 NA
z NA NA 1
ฟังก์ชัน cor() ส่งคืน NA ในหลายตำแหน่ง เนื่องจากเราไม่ได้ระบุวิธีจัดการกับค่าที่หายไป
เพื่อหลีกเลี่ยงปัญหานี้ เราสามารถใช้อาร์กิวเมนต์ use=’pairwise.complete.obs’ เพื่อให้ R รู้ว่าจะใช้เฉพาะการสังเกตแบบคู่เมื่อมีทั้งสองค่าอยู่:
#create data frame with some missing values
df <- data. frame (x=c(70, 78, 90, 87, 84, NA, 91, 74, 83, 85),
y=c(90, NA, 79, 86, 84, 83, 88, 92, 76, 75),
z=c(57, 57, 58, 59, 60, 78, 81, 83, NA, 90))
#create correlation matrix for variables using only pairwise complete observations
cor(df, use=' pairwise.complete.obs ')
X Y Z
x 1.0000000 -0.4888749 0.1311651
y -0.4888749 1.0000000 -0.1562371
z 0.1311651 -0.1562371 1.0000000
ค่าสัมประสิทธิ์สหสัมพันธ์สำหรับการรวมตัวแปรแต่ละคู่ในฐานข้อมูลจะแสดงขึ้นแล้ว
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ ใน R:
วิธีค้นหาค่า P ของสัมประสิทธิ์สหสัมพันธ์ในหน่วย R
วิธีการคำนวณความสัมพันธ์ของ Spearman ใน R
วิธีการคำนวณความสัมพันธ์แบบเลื่อนใน R