นโยบายการจัดการความรู้ มหาวิทยาลัยสงขลานครินทร์ 1.ให้ใช้เครื่องมือการจัดการความรู้ผลักดัน คุณภาพคน และกระบวนทำงาน 2.ส่งเสริมการแลกเปลี่ยนประสบการณ์การทำงาน จากหน้างาน 3.ส่งเสริมให้มีเวทีเรียนรู้ร่วมกัน

Our Shangri-La
Ico64
Kittisakdi Choomalee

ภาควิชาเวชศาสตร์ชุมชน คณะแพทยศาสตร์ มหาวิทยาลัยสงขลานครินทร์
เครือข่าย
สมาชิก · ติดตาม: 0 · ผู้ติดตาม: 16

อ่าน: 8098
ความเห็น: 1

ก้าวย่างทางเดิน ลืมเลือนคืนวัน ดั้นด้นไป: R ใหญ่มั๊ย [C]

ขอบจำกัดอยู่ตรงไหน วัดเป็นปริมาตรหรือปริมาณได้เท่าไหร่ ใหญ่ไม่ใหญ่ ก็ลองไปถามคนสงขลาดู

ใหญม่ายใหญ

จากบันทึก ก้าวย่างทางเดิน ลืมเลือนคืนวัน ดั้นด้นไป: เดินไปเดินมา ๓ วัน กับ R # ๑๒ ที่ตอนท้ายของบันทึกได้พูดถึงข้อจำกัดของ R ว่า R สามารถรองรับข้อมูลได้สูงสุดเท่าไหร่

 

โดยทำการทดสอบสร้าง matrix ว่าง (NA) ที่มีขนาดเป็นสี่เหลี่ยมจตุรัส คือมีขนาดเป็น n x n โดยกำหนดจำนวน n หรือแถวและสดมภ์เข้าไป

 

จากการทดสอบพบบว่าเมื่อใส่จำนวนแถวและสดมภ์ (คิดเอาว่าเติมตัวเลขกลม ๆ) เข้าไปจำนวน แถวและสดมภ์จะสูงสุดอยู่ที่ ๔๐,๐๐

 

หรือหากคิดเป็นจำนวนข้อมูล หรือถ้าเทียบกับตัวเลขตั้งแต่ ๑ เพิ่มทีละ ๑ ไปเรื่อย ๆ จะไปสิ้นสุดที่จำนวนเท่าไหร่

 

๔๐,๐๐๐ x ๔๐,๐๐๐ = ๑,๖๐๐,๐๐๐,๐๐๐

 

หนึ่งพันหกร้อยล้านข้อมูลหรือถ้าใส่จำนวนลงไปก็จะใส่จำนวนลงไปได้ตั้งแต่ ๑ จนถึง ๑,๖๐๐,๐๐๐,๐๐๐

 

จำนวน ๑,๖๐๐,๐๐๐,๐๐๐ ข้อมูลนี้มากหรือน้อย

 

ตอนนี้เราไม่พูดถึงปัจจัยแวดล้อมอื่น ๆ นะครับ คิดเฉพาะจำนวนข้อมูลที่ใส่ลงไน matrix ได้ก่อน

matrix ขนาด ๑,๖๐๐,๐๐๐,๐๐๐ หรือ ๔๐,๐๐๐  x ๔๐,๐๐๐ นั้นถ้าเทียบกับชุดของข้อมูลที่ประกอบด้วย fields (columns) และ records (rows) หรือตัวแปรและระเบียนนั่นก็คือเราสามารถใส่ข้อมูลได้จำนวน ๔๐,๐๐๐ ชุด หรือถ้าเป็นข้อมูลที่เกิดจากการเก็บข้อมูลของตัวอย่างที่เป็นคน ก็จะเทียบได้กับข้อมูลของคนจำนวน ๔๐,๐๐๐ คน

๔๐,๐๐๐ คนดูแล้วน้อยมากเมื่อเทียบกับข้อมูลบางอย่างอาจจะมีข้อมูลของคนเรือนแสน ๔๐,๐๐๐ นี่ยังไม่ถึงครึ่งนึงของแสนเลย

 

แต่อย่าลืมว่าข้อมูลของคน ๑ คนนั้นสามารถเก็บลักษณะของคนได้ถึง ๔๐,๐๐๐ ลักษณะ หรือ ๔๐,๐๐๐ ตัวแปร เช่นคน ๑ คนเก็บข้อมูล สีผิว น้ำหนัก ส่วนสูง อายุ เพศ สถานภาพสมรส อาชีพ รายได้ ... คิดข้อมูลที่จะเก็บให้ถึง ๔๐,๐๐๐ ลักษณะนะครับ

 

เราจะพบว่าในความเป็นจริงแล้วลักษณะ/ ข้อมูง/ ตัวแปรของตัวอย่างที่เราเก็บนั้น มีจำนวนไม่มากนัก

 

ยกตัวอย่างนะครับ ว่าเราใช้การเก็บข้อมูลด้วยแบบสอบถาม

 

แบบสอบถาม ๑ ชุด มีข้อคำถามสัก ๔๐๐ ข้อ (ซึ่งถือว่ามากและไม่ควรจะเป็นเช่นนี้ครับ) แต่ละข้อคำถามต้องการเก็บข้อมูล ๑ ข้อมูล/ ลักษณะ ดังนั้นจำนวนตัวแปรหรือสดมภ์ของข้อมูลมีประมาณ ๔๐๐ สดมภ์

 

คราวนี้ R สามารถสร้าง matrix ที่มีขนาดได้สูงสุด ๔๐,๐๐๐ x ๔๐,๐๐๐

จากตัวอย่างที่เราเก็บข้อมูล ข้อมูลของเรามี ๔๐๐ สดมภ์ ดังนั้นถ้าเราเก็บข้อมูลในลักษณะนี้ เราก็สามารถเก็บข้อมูลใน R ได้จำนวน ๔,๐๐๐,๐๐๐ x ๔๐๐  = ๑,๖๐๐,๐๐๐,๐๐๐

 

หรือเราสามารถใช้ R เก็บข้อมูลของคนที่เราเก็บข้อมูล ๔๐๐ คำถามได้จำนวน ๔,๐๐๐,๐๐๐ คน

 

สี่ล้านคน

 

แล้วถ้าตัวแปรที่เราเก็บลดลงมาอีกครึ่งหนึ่งเหลือแค่ ๒๐ ตัวแปรล่ะ เราจะเก็บข้อมูลได้กี่คน

๑,๖๐๐,๐๐๐,๐๐๐ / ๒๐๐ = ๘,๐๐๐,๐๐๐ คน

 

แปดล้านคน

 

ถ้าเราถามคำถามแค่ ๑๐๐ คำถาม จำนวนคนที่เก็บข้อมูลได้ก็คือ ๑๖,๐๐๐,๐๐๐ คน

 

ในชีวิตจริงสำหรับการทำวิจัยเราคงไม่ต้องใช้จำนวนตัวอย่างเป็นล้านคนนะครับ

 

จะยกเว้นก็ข้อมูลบางอย่าง เช่นข้อมูลผู้โดยสารของสารการบินต่างในรอบปีหรือในรอบ ๕ ปี เป็นต้น

 

โปรแกรมวิเครคาะห์ข้อมูลบางโปรแกรม เช่น โปรแกรม Stata นั้น จะมีรุ่นให้เลือกอยู่หลายรุ่น คือ Small Stata, Intercooled Stata, Stata SE และ Stata MP

 

  • Small Stata นั้นรองรับตัวแปรได้จำนวน ๙๙ ตัวแปรและรองรับจำนวนระเบียนได้สูงสุด ๑,๒๐๐ ระเบียน หรือเก็บข้อมูลคนได้จำนวน ๑,๒๐๐ คน แต่ละคนเก็บข้อมูลได้สูงสุด ๙๙ ลักษณะ แต่ถ้าจะสร้างสมการโมเดล (model) นั้นสามารถที่จะมีจำนวนตัวแปรทางขวามือ หรือตัวแปรอิสระในสมการได้ ๙๘ ตัวแปร
  • Intercooled Stata (Stata/IC) รองรับตัวแปรได้ ๒,๐๔๗ ตัวแปร ส่วนจำนวนระเบียนหรือจำนวนคนที่จะเก็บข้อมูลนั้นขึ้นอยู่กับหน่วยความจำของเครื่องคอมพิวเตอร์หรือจำกัดอยู่ที่ ๒.๑๔ พันล้านตัวแปร (2.14 billion - ในแบบอเมริกา) แต่ถ้าจะสร้างสมการโมเดล (model) นั้นสามารถที่จะมีจำนวนตัวแปรทางขวามือ หรือตัวแปรอิสระในสมการได้ ๗๙๘ ตัวแปร
  • SataSE/ Stata MP นั้น สร้างสมการโมเดล (model) ที่มีจำนวนตัวแปรทางขวามือ หรือตัวแปรอิสระในสมการได้ ๑๐,๙๙๘ ตัวแปร จำนวนระเบียนสูงสุด 2.14 billion

 

ข้อแตกต่างระหว่าง StataSE และ StataMP คือ StataMP นั้นจใช้ความสามารถของ Multi-processor ได้ (MP - Multi-Processor)

 

ตัวอย่างเช่นเครื่องคอมพิวเตอร์ของเราที่ใช้ในปัจจุบัน ถ้าใช้ CPU หรือตัวประมวลผลกลางของบริษัทอินเทล (Intel Corporation) รุ่น Core ไม่ว่าจะเป็น Core i3, i5, i7 CPU รุ่นธรรมดานี้จะมีจำนวน core อยู่ ๒ core (Dual-Core) หรือมีตัวประมวลผล ๒ แกน อยู่ภายใน CPU ๑ ตัว เรียกว่าคำนวณได้พร้อม ๆ กัน ๒ การคำนวณ

 

ถ้า CPU รุ่นอื่นเช่นรุ่น Quad-Core จะมีแกนคำนวณอยู ๔ แกน การคำนวณก็จะทำได้เร็วมากขึ้นเพราะมีคนช่วยคิดถึง ๔ คน

 

และถ้าเครื่องคอมพิวเตอร์ ๑ เครื่องใช้ CPU มากกว่า ๑ เช่นใช้ CPU รุ่น Quad-core จำนวน ๔ ตัว การประมวลผลก็จะมีตัวช่วย ๔ x ๔ = ๑๖ ตัวช่วย แต่คอมพิวเตอร์แบบนี้มีราคาแพง ส่วนใหญ่จะนำมาใช้เป็น server

 

StataMP สามารถใช้ความสามารถตรงนี้ได้เพียงแต่ให้เราระบุว่า เครื่องคอมพิวเตอร์ของเรามีแกนคำนวนเท่าไหร่ ซึ่งหากเป็น Dual-Core นั้นทาง Stat Corp. กล่าวไว้ว่า StataMP  ทำงานได้เร็วขึ้น ๔๐ เปอร์เซนต์หรือใช้เวลาในการคำนวณน้อยลงถึง ๗๒ เปอร์เซนต์

 

ไม่ว่าจะเป็น R หรือ Stata จำนวนระเบียนสูงสุดนั้นมีจำนวนมากเพียงพอต่อการวิเคราะห์ข้อมูลของนักวิจัยทั่ว ๆ ไปได้

 

ใน R นั้นเราสามารถตอบสอบจำนวนข้อมูลสูงสุดที่รองรับได้ด้วยบรรทัดคำสั่ง

> .Machine$integer.max
[1] 2147483647

 

๒,๑๔๗,๔๘๓,๖๔๗  สองพันหนึ่งร้อยสี่สิบเจ็ดล้านสี่แสนแปดหมื่นสามพันหกร้อยสี่สิบเจ็ด ข้อมูล หรือถ้าเขียนเป็นเลขยกกำลังก็จะได้เป็น 2^31-1

 

๒,๑๔๗,๔๘๓,๖๔๗ อันนี้คือขนาดของ vector  หรือจำนวน element ใน vector สูงสุดที่จะมีได้

 

สำหรับ matrix แล้ว ข้อมูลที่อยู่ภายใน matrix เป็นลักษณะของ vector ซึ่งจะทำให้ matrix มีขนาดจำกัดอยู่เพียง ๒,๑๔๗,๔๘๓,๖๔๗ เท่านั้น หรือประมาณ ๔๕,๐๐๐ x ๔๕,๐๐๐

 

vector ก็คือข้อมูลแต่ละข้อมูล (ค่า) มาเรียงต่อกันเป็นแถวเดียว เช่น vetor ที่ประกอบด้วยตัวเลข ๑ - ๒๐ ตัวเลขจะเรียงกันไป ๑ ๒ ๓ ๔ ๕ ๖ ๗ ๘ ๙ ๑๐ ๑๑ ๑๒ ๑๓ ๑๔ ๑๕ ๑๖ ๑๗ ๑๘ ๑๙ ๒๐

จำนวนข้อมูลของ vector มีได้สูงสุด ๒,๑๔๗,๔๘๓,๖๔๗ ค่า (ข้อมูล)

 

matrix ก็คือการนำเอา vector มาทำให้อยู่ในรูปของตาราง คือประกอบด้วยแถว (row) และสดมภ์ (column)

 

vector ที่ประกอบด้วยข้อมูล ๑ - ๒๐ นำมาทำให้อยู่ในรูปของ matrix ได้ขหลายขนาด เช่น ๒๐ x ๑ หรือ ๑๐ x ๒ หรือ ๕ x ๔ หรือ ๔ x ๕ หรือ ๒ x ๑๐ หรือ ๑ x ๒๐

 

ดังนั้นขนาดของ matrix จึงถูกจำกัดอยู่ที่ขนาด ๒,๑๔๗,๔๘๓,๖๔๗ ซึ่งจะเท่ากับจำนวนค่าที่มีได้สูงสุดของ vector

 

แต่สำหรับกรอบข้อมูล (data frame) นั้นจะแตกต่างจาก matrix (แต่จะคล้าย ๆ กัน คือมีแถวและสดมภ์) แต่กรอบข้อมูลจะเป็นลักษณะ vector ของ vector (Dataframes are vectors of vectors) ดังนั้นกรอบข้อมูลสามารถมีจำนวนระเบียนและตัวแปรได้สูงสุด ๒,๑๔๗,๔๘๓,๖๔๗ ระเบียนและ ๒,๑๔๗,๔๘๓,๖๔๗ ตัวแปร

 

นั่นคือขนาดของกรอบข้อมูลที่จะมีได้คือ ๒,๑๔๗,๔๘๓,๖๔๗ x ๒,๑๔๗,๔๘๓,๖๔๗

 

เก็บข้อมูลคนได้ ๒ พันล้านคน และจำนวนตัวแปรที่เก็บได้สูงสุดคือ ๒ พันล้านตัวแปร

 

ดูการสนทนาเกี่ยวกับเรื่องนี้ได้ที่นี่ครับ

 

ด้วยขนาดของข้อมูลที่ใหญ่มากเช่นนี้ คอมพิวเตอร์ธรรมดาของเราไม่สามารถที่จะรองรับข้อมูลขนาดนี้ได้โดยเฉพาะคอมพิวเตอร์ที่เป็น ๓๒ บิต ซึ่งมองเห็นหน่วยความจำ (RAM) ได้แค่ ๓ จิกะไบต์ แต่ถ้าเป็นเครื่องคอมพิวเตอร์ที่เป็น ๖๔ บิตก็พอกล้อมแกล้มไปได้ ซึ่งอาจจะต้องใช้ตัวช่วยในการจัดการกับข้อมูลที่มีขนาดใหญ่เช่นนี้

 

bigmemory package เป็นอีกชุดคำสั่งหนึ่งของ R ที่เขียนขึ้นเพื่อรองรับข้อมูลที่มีขนาดใหญ่มาก ๆ หรือเพื่อขยายความสามารถของ matrix ที่ถูกจำกัดอยู่ที่จำนวน elements มีได้ไม่เกิน ๒,๑๔๗,๔๘๓,๖๔๗ elements (หรือข้อมูล)

 

ท้ายที่สุดแล้วไม่ว่าจะใหญ่หรือไม่ใหญ่นั้น เราคงไม่มีผลกระทบจากเรื่องนี้มากนัก เนื่องจากข้อมูลวิจัยอย่างเรา ๆ ท่าน ๆ คงไม่ใหญ่เบอะขนาดนั้น

 

อิอิอิ

 

ใหญ่ไม่ใหญ่ ลองถามลุงดูก็ได้

 

อิอิอิ

 

เราเอง

 

เพลง: คนใหญ่ในงาน
ศิลปิน: พายุ สุริยัน

 

ถ้าฟังแล้วไม่เข้าใจ ให้ถามลุงทดแทน

 

หมวดหมู่บันทึก: เรื่องทั่วไป
สัญญาอนุญาต: ซีซี: แสดงที่มา-ไม่ใช้เพื่อการค้า-อนุญาตแบบเดียวกัน Cc-by-nc-sa
สร้าง: 05 มิถุนายน 2557 12:21 แก้ไข: 28 เมษายน 2563 17:32 [ แจ้งไม่เหมาะสม ]
ดอกไม้
สมาชิกที่ให้กำลังใจ: Ico24 คนธรรมดา, Ico24 ทดแทน, และ 2 คนอื่น.
สมาชิกที่ให้กำลังใจ
 
Facebook
Twitter
Google

บันทึกอื่นๆ

ความเห็น

อ่านดูแล้ว ต้องตอบว่าใหญ่ครับ

คุณต้องทำการเข้าระบบก่อนแสดงความเห็น