Standard Deviation ใน R คืออะไร? วิธีคำนวณด้วย sd() Function ใน RStudio พร้อมตัวอย่าง

By Leonard Cucosth
สถิติRสถิติเชิงพรรณนา

ในบทเรียนที่แล้ว เราได้เรียนรู้วิธีการคำนวณ Standard Deviation ด้วย Excel ครั้งนี้เราจะมาเรียนรู้วิธีการคำนวณ Standard Deviation ใน R ทีละขั้นตอนพร้อมตัวอย่างที่ชัดเจน

แม้ว่า R จะมีโครงสร้างข้อมูลหลายประเภท แต่ในบทช่วยสอนนี้เราจะเน้นที่วิธีการคำนวณ Standard Deviation ใน RStudio สำหรับโครงสร้างข้อมูลที่ใช้บ่อยที่สุด ได้แก่ Data Frame, Vector และ Array

โดยสมมติว่าคุณได้ติดตั้ง R และ RStudio ไว้ในคอมพิวเตอร์แล้ว ให้เปิด RStudio ในระหว่างนี้ เรามาทบทวนเรื่องสำคัญเกี่ยวกับ Standard Deviation กันสักหน่อย - จะไม่ใช้เวลานาน

ตารางอ้างอิงด่วน: Standard Deviation ใน R

Functionใช้สำหรับSyntaxตัวอย่าง
sd()Sample Standard Deviationsd(x)sd(df$column)
sd()Population Standard Deviationsd(x) * sqrt((n-1)/n)sd(data) * sqrt(24/25)
var()Variance (สำหรับคำนวณด้วยตัวเอง)var(x)sqrt(var(data))

Standard Deviation คืออะไร?

อธิบายง่ายๆ Standard Deviation บอกเราว่าชุดข้อมูลกระจายตัวมากน้อยเพียงใดเมื่อเทียบกับค่าเฉลี่ย (Mean) ในชุดข้อมูลนั้น ค่า Standard Deviation ที่ต่ำเป็นที่ต้องการเพราะบอกว่าข้อมูลมีความน่าเชื่อถือมากกว่า เนื่องจากกระจุกตัวอยู่รอบๆ ค่าเฉลี่ย ในทางตรงกันข้าม ค่า Standard Deviation ที่สูงบ่งชี้ว่าข้อมูลกระจายตัวอยู่ในช่วงกว้างมากขึ้น

สัญลักษณ์ทั่วไปสำหรับ Standard Deviation คือ sd อย่างไรก็ตาม Standard Deviation มีสองสูตร (รวมถึงสองสัญลักษณ์) ขึ้นอยู่กับว่าคำนวณสำหรับ Population ทั้งหมดหรือ Sample

สัญลักษณ์สำหรับ Population Standard Deviation แทนด้วยตัวอักษรกรีกตัวพิมพ์เล็ก Sigma σ ในขณะที่สัญลักษณ์สำหรับ Sample Standard Deviation คือตัวอักษร s ที่คุ้นเคยมากกว่า

สูตร Population Standard Deviation

σ=(xiμ)2N\Large \sigma = \sqrt{\frac{\sum(x_i - \mu)^2}{N}}

โดยที่:

  • σ = Population Standard Deviation
  • μ = Population Mean
  • N = ขนาด Population

สูตร Sample Standard Deviation

s=(xixˉ)2n1\Large s = \sqrt{\frac{\sum(x_i - \bar{x})^2}{n-1}}

โดยที่:

  • s = Sample Standard Deviation
  • x̄ = Sample Mean
  • n = ขนาด Sample
  • n-1 = Bessel's Correction (Degrees of Freedom)

อาจมีความสับสนเกี่ยวกับ Standard Deviation ไม่ว่าจะเป็นสัญลักษณ์ การคำนวณ และการใช้งานที่ถูกต้องในงานวิจัยทางสถิติ โชคดีที่ฉันมีวิธีแก้ไขที่สมบูรณ์แบบ! ลองใช้เวลาสักครู่อ่านบทเรียน Population vs. Sample Standard Deviation อธิบายละเอียด ก่อน แล้วคุณจะรู้สึกมั่นใจเมื่อจะเริ่มใช้งาน R

การคำนวณ Standard Deviation ใน R

ใน R, Function ที่ใช้สำหรับ Standard Deviation คือ sd() และโดยพื้นฐานแล้วจะคำนวณรากที่สองของ Variance ในชุดข้อมูลที่ป้อนเข้าไป ชุดข้อมูลและค่าต่างๆ ที่มีอยู่จะถูกกำหนดก่อน จากนั้นจึงนำไปใส่เป็น Input ใน sd() Function เพื่อทำการคำนวณ

สำคัญ: sd() Function ใน R คำนวณ Sample Standard Deviation (ใช้ n-1 ในตัวหาร) หากคุณต้องการ Population Standard Deviation คุณจะต้องปรับค่าด้วย Correction Factor

ต่อไป มาเรียนรู้วิธีการคำนวณ Standard Deviation ใน R โดยใช้ sd() Function พร้อมตัวอย่างทีละขั้นตอน

การใช้งานกับชุดข้อมูล Excel

เริ่มต้นด้วยการคำนวณ Standard Deviation ของอายุใน R สำหรับกลุ่มผู้ตอบแบบสอบถามในชุดข้อมูล Excel

คุณสามารถทำตามได้โดยดาวน์โหลดไฟล์ Standard-Deviation-on-R.xlsx จากแถบด้านข้าง เมื่อดาวน์โหลดแล้ว ให้นำเข้าชุดข้อมูล Excel ใน RStudio โดยไปที่ File → Import Dataset → From Excel และเลือกไฟล์ที่ดาวน์โหลดมา

ชุดข้อมูล Excel ตัวอย่างของเรามีสองคอลัมน์: age และ weight ดังที่เห็นในรูปต่อไปนี้

ตาราง Excel แสดงคอลัมน์ Age และ Weight พร้อมข้อมูลตัวอย่างสำหรับคำนวณ Standard Deviation ใน R ชุดข้อมูล Excel ตัวอย่างที่มีคอลัมน์ Age และ Weight สำหรับวิเคราะห์ Standard Deviation ใน R

ขั้นตอนที่ 1: นำเข้าไฟล์ Excel

ใน RStudio ไปที่:

  • File → Import Dataset → From Excel
  • เลือกไฟล์ Standard-Deviation-on-R.xlsx

ขั้นตอนที่ 2: คำนวณ Standard Deviation สำหรับคอลัมน์ Age

เพื่อหา Standard Deviation ใน R สำหรับส่วนย่อย age ในชุดข้อมูล Excel ที่นำเข้า ให้พิมพ์ใน RStudio Console:

sd(Standard_Deviation_on_R$Age)

โดยที่:

  • sd() = Standard Deviation Function ใน R
  • Standard_Deviation_on_R = ชุดข้อมูล Excel Object
  • $ = Operator ที่ใช้ดึงส่วนเฉพาะของชุดข้อมูล เช่น คอลัมน์ age

และ Standard Deviation สำหรับ Age คือ 14.46402 ลองคำนวณ Standard Deviation สำหรับส่วนย่อย weight ในไฟล์ Excel เดียวกัน

หน้าจอ RStudio Console แสดงผลลัพธ์ sd() Function เท่ากับ 14.46402 สำหรับคอลัมน์ Age จากชุดข้อมูล Excel หน้าจอ RStudio Console แสดง Standard Deviation เท่ากับ 14.46402 สำหรับคอลัมน์ Age

ขั้นตอนที่ 3: คำนวณ Standard Deviation สำหรับคอลัมน์ Weight

sd(Standard_Deviation_on_R$Weight)

การใช้งานกับ Data Frame

ใน R, Data Frame ประกอบด้วยสามส่วนหลัก: แถว, คอลัมน์ และ ข้อมูล โดยสรุป Data Frame คือทุกอย่างที่สามารถเก็บข้อมูลในรูปแบบตารางได้

เราสามารถนำเข้า Data Frame ใน R จากไฟล์ Text หรือ Excel (เหมือนที่เราทำก่อนหน้านี้) หรือสร้าง Data Frame ด้วยตนเองและดึง Standard Deviation ของคอลัมน์ตัวเลขออกมาโดยใช้ sd() Function ใน R

ก่อนอื่น เรามาสร้าง Data Frame ใน R ที่ประกอบด้วยบริษัทเทคโนโลยีชั้นนำห้าบริษัทและราคาต่อหุ้น (NASDAQ) ณ เวลาที่เขียนบทความนี้:

APPLMSFTAMZNGOOGLTSLA
174.24308.313259.952781.351078

ขั้นตอนที่ 1: สร้าง Data Frame

เราจะใช้ data.frame() Function เพื่อสร้าง df Object ใน R Data Frame นี้จะมีห้าคอลัมน์และสองแถว คล้ายกับตารางด้านบน ประกอบด้วย Company ID (1 ถึง 5), ชื่อบริษัท และราคาหุ้นของแต่ละบริษัท

นี่คือวิธีสร้าง Data Frame ใน R โดยใช้คำสั่งเดียว:

df <- data.frame(company_id = c(1:5),
     company_name = c("APPL", "MSFT", "AMZN", "GOOGL", "TSLA"),
     share_price = c(174.24, 308.31, 3259.95, 2781.35, 1078),
     stringsAsFactors = FALSE)

โดยที่:

  • df = Data Frame Object ที่มี Company ID, ชื่อบริษัท และราคาหุ้นของบริษัทเทคโนโลยีชั้นนำห้าบริษัทของสหรัฐฯ
  • stringsAsFactors = Argument สำหรับ data.frame() Function และใช้เพื่อกำหนดว่า String ใน Data Frame ควรถือเป็น Factor หรือเป็น String ธรรมดา ในกรณีนี้เราต้องการให้ข้อมูลเป็น Character String ดังนั้นเราจึงเพิ่ม FALSE Flag ใน stringsAsFactors Argument

ขั้นตอนที่ 2: คำนวณ Standard Deviation สำหรับคอลัมน์ share_price

สุดท้าย มาคำนวณ Standard Deviation ใน R สำหรับราคาหุ้นของบริษัทเทคโนโลยีชั้นนำห้าบริษัทของสหรัฐฯ โดยใช้ sd() Function ที่เรารู้จักกันดีแล้ว:

sd(df$share_price)

หน้าจอ RStudio Console แสดง sd() Function คำนวณ Standard Deviation เท่ากับ 1422.415 สำหรับคอลัมน์ share_price ใน Data Frame ผลลัพธ์ Standard Deviation เท่ากับ 1422.415 สำหรับราคาหุ้นบริษัทเทคใน Data Frame ของ R

อย่างที่เห็น ค่า Standard Deviation ที่คำนวณได้สำหรับราคาหุ้นคือ 1422.415

แน่นอนว่า เราสามารถเพิ่มแถวและคอลัมน์เพิ่มเติมใน Data Frame และขยายการวิเคราะห์ Standard Deviation ใน R ให้กว้างขึ้นนอกเหนือจากแค่ราคาหุ้น

การใช้งานกับ Vector

Vector เป็นโครงสร้างข้อมูลพื้นฐานที่สุดใน R และประกอบด้วยชุดของข้อมูลที่เป็นประเภทเดียวกัน

ตัวอย่างเช่น ใน R Vector 1:10 จะมีค่าตั้งแต่ 1 ถึง 10 คือ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

นอกจากนี้ Vector สามารถมีค่าเฉพาะเจาะจงได้เช่นกัน ตัวอย่างเช่น Vector c(2,4,6) จะมีค่า 2, 4 และ 6

ขั้นตอนที่ 1: สร้าง Vector

เริ่มต้นด้วยการสร้าง Vector vc โดยใช้ Operator (:) และส่วนประกอบ Vector ที่มีค่าตั้งแต่ 1 ถึง 10

vc <- 1:10

ขั้นตอนที่ 2: แสดง Vector (ตัวเลือก)

คุณสามารถแสดงส่วนประกอบของ Vector vc โดยใช้คำสั่ง Concatenate cat ดังนี้:

cat(vc)

ขั้นตอนที่ 3: คำนวณ Standard Deviation

ต่อไป คำนวณ Standard Deviation ใน R สำหรับ vc Object โดยใช้คำสั่ง:

sd(vc)

นี่คือผลลัพธ์ทั้งหมด อย่างที่เราเห็น Standard Deviation ใน R สำหรับ Vector vc คือ 3.02765

หน้าจอ RStudio Console แสดงการสร้าง Vector ด้วย cat() และ sd() Function ส่งคืนค่า 3.02765 สำหรับ Vector 1:10 Standard Deviation เท่ากับ 3.02765 คำนวณสำหรับ Vector ที่มีค่าตั้งแต่ 1 ถึง 10 ใน RStudio

การใช้งานกับ Array

ใน R, Array คือชุดของ Object ที่อาจมีข้อมูลตั้งแต่สองมิติขึ้นไป (Multi-dimensional) และเก็บค่าที่เป็นประเภทข้อมูลเดียวกัน Array ไม่ควรสับสนกับ Vector ที่มีลักษณะเป็นมิติเดียว (Uni-dimensional)

เพื่อหา Standard Deviation สำหรับ Array ใน R เราต้องสร้าง Array โดยใช้ array() Function ที่มีมาให้ เราจะใช้สอง Vector เป็น Argument (เช่น vc1 และ vc2) จากนั้นจึงตั้งค่ามิติของ Matrix โดยใช้ dim Function

ขั้นตอนที่ 1: สร้าง Vector แรก

ก่อนอื่น ให้กำหนด Vector vc1 ที่มีองค์ประกอบ 12 และ 8 โดยใช้คำสั่ง:

vc1 <- c(12,8)

ขั้นตอนที่ 2: สร้าง Vector ที่สอง

และตั้งค่า Vector vc2 ที่ประกอบด้วยองค์ประกอบ 39 และ 17:

vc2 <- c(39,17)

ขั้นตอนที่ 3: สร้าง Array จาก Vector

ต่อไป เราต้องสร้าง Array โดยใช้ Vector vc1 และ vc2 และใช้ dim Function เพื่อตั้งค่ามิติของ Matrix (คอลัมน์ต่อแถว) ดังนี้:

arr <- array(c(vc1, vc2), dim = c(2, 2))

ขั้นตอนที่ 4: คำนวณ Standard Deviation สำหรับ Array

และสุดท้าย เราสามารถใช้ sd() Function เพื่อคำนวณ Standard Deviation ใน R สำหรับ Array Object ที่สร้างขึ้นใหม่:

sd(arr)

ด้านล่างนี้คือผลลัพธ์ทั้งหมดใน R สำหรับคำสั่งข้างต้น อย่างที่เห็น Standard Deviation สำหรับ Array arr คือ 13.832

หน้าจอ RStudio Console แสดงการสร้าง Array จาก Vector สองตัวและผลลัพธ์ sd() Function เท่ากับ 13.832 Standard Deviation เท่ากับ 13.832 คำนวณสำหรับ Array ขนาด 2x2 ที่สร้างจาก Vector ใน RStudio

Population vs. Sample Standard Deviation ใน R

ดังที่กล่าวไว้ก่อนหน้านี้ sd() Function ใน R คำนวณ Sample Standard Deviation โดยค่าเริ่มต้น (ใช้ Bessel's Correction ด้วย n-1)

หากคุณต้องการคำนวณ Population Standard Deviation ใน R คุณจะต้องปรับค่าด้วย Correction Factor:

# Sample Standard Deviation (default)
sample_sd <- sd(data)
 
# Population Standard Deviation
n <- length(data)
population_sd <- sd(data) * sqrt((n-1)/n)

ตัวอย่าง: Population Standard Deviation

มาคำนวณ Population Standard Deviation สำหรับตัวอย่าง Vector ของเรา:

# สร้าง Vector
vc <- 1:10
 
# Sample Standard Deviation
sd(vc)  # ส่งคืนค่า 3.02765
 
# Population Standard Deviation
n <- length(vc)
sd(vc) * sqrt((n-1)/n)  # ส่งคืนค่า 2.872281

คำถามที่พบบ่อย

Function สำหรับ Standard Deviation ใน R คือ **sd()** ซึ่งคำนวณ Sample Standard Deviation ของ Numeric Vector, คอลัมน์ Data Frame, Array หรือ Numeric Object ใดๆ ตัวอย่างเช่น: `sd(data)` หรือ `sd(df$column)`
**sd()** Function ใน R คำนวณ **Sample Standard Deviation** โดยค่าเริ่มต้น โดยใช้ Bessel's Correction (n-1 ในตัวหาร) หากต้องการคำนวณ Population Standard Deviation ให้ใช้: `sd(x) * sqrt((n-1)/n)` โดยที่ n คือความยาวของข้อมูล
วิธีคำนวณ Standard Deviation ใน RStudio: 1) โหลดข้อมูลเข้า R, 2) ใช้ `sd()` Function กับ Data Object ของคุณ, 3) สำหรับ Data Frame ใช้ `sd(df$column_name)` เพื่อคำนวณ Standard Deviation สำหรับคอลัมน์เฉพาะ สำหรับ Vector ใช้แค่ `sd(vector_name)`
ได้! นำเข้าไฟล์ Excel ใน RStudio ผ่าน **File → Import Dataset → From Excel** จากนั้นใช้ `sd(dataset_name$column_name)` เพื่อคำนวณ Standard Deviation สำหรับคอลัมน์ตัวเลขใดๆ ในข้อมูล Excel ของคุณ
**sd()** Function คำนวณ Standard Deviation (รากที่สองของ Variance) ในขณะที่ **var()** คำนวณ Variance มีความสัมพันธ์กัน: `sd(x)` เท่ากับ `sqrt(var(x))` Standard Deviation อยู่ในหน่วยเดียวกับข้อมูล ขณะที่ Variance อยู่ในหน่วยกำลังสอง
ใช้ **sapply()** หรือ **apply()** Function: `sapply(df[,c('col1','col2','col3')], sd)` คำนวณ Standard Deviation สำหรับหลายคอลัมน์พร้อมกัน หรือใช้ `apply(df, 2, sd)` เพื่อคำนวณ Standard Deviation สำหรับทุกคอลัมน์ตัวเลขใน Data Frame
R ส่งคืนค่า **NA** เมื่อข้อมูลของคุณมีค่าที่ขาดหาย ใช้ `sd(data, na.rm = TRUE)` เพื่อคำนวณ Standard Deviation โดยเพิกเฉยค่า NA Parameter `na.rm = TRUE` จะลบค่าที่ขาดหายก่อนการคำนวณ

สรุป

ในบทช่วยสอน R สำหรับสถิตินี้ เราได้เรียนรู้วิธีการคำนวณ Standard Deviation ใน RStudio สำหรับชุดข้อมูล Excel ที่นำเข้า, Data Frame, Vector และ Array

แม้ว่าการคำนวณ Standard Deviation ใน SPSS หรือ Excel จะตรงไปตรงมากว่าบ้าง แต่ R ให้ความยืดหยุ่นและควบคุมข้อมูลที่เราป้อนและจัดการได้มาก

สิ่งสำคัญที่ควรจำ:

  • sd() Function คือ Function ที่มีมาให้ใน R สำหรับ Standard Deviation
  • R คำนวณ Sample Standard Deviation โดยค่าเริ่มต้น (ใช้ n-1)
  • ใช้ Correction Factor sd(x) * sqrt((n-1)/n) สำหรับ Population Standard Deviation
  • $ Operator ดึงคอลัมน์จาก Data Frame
  • Standard Deviation ใช้ได้กับการนำเข้า Excel, Data Frame, Vector และ Array

หวังว่าคุณจะได้รับประโยชน์จากบทช่วยสอน R นี้ หากเป็นเช่นนั้น กรุณาช่วยแบ่งปันความรู้โดยแชร์บทความนี้กับเพื่อนและเพื่อนร่วมงานของคุณ

เอกสารอ้างอิง

Field, A., Miles, J., & Field, Z. (2012). Discovering statistics using R. SAGE Publications.