วิธีใช้ชุดย่อยของ data frame พร้อมฟังก์ชัน lm() ใน r


คุณสามารถใช้อาร์กิวเมนต์เซ็ต ย่อย เพื่อใช้เฉพาะเซ็ตย่อยของกรอบข้อมูลเมื่อใช้ฟังก์ชัน lm() เพื่อให้พอดีกับโมเดลการถดถอยใน R:

 fit <- lm(points ~ fouls + minutes, data=df, subset=(minutes> 10 ))

ตัวอย่างเฉพาะนี้สอดคล้องกับแบบจำลองการถดถอยโดยใช้ คะแนน เป็นตัวแปรตอบสนอง ฝูงชน และ นาที เป็นตัวแปรทำนาย

อาร์กิวเมนต์เซ็ต ย่อย ระบุว่าควรใช้เฉพาะแถวในกรอบข้อมูลที่ตัวแปร นาที มากกว่า 10 เมื่อปรับโมเดลการถดถอยให้เหมาะสม

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ

ตัวอย่าง: วิธีใช้ชุดย่อย data frame ด้วย lm() ใน R

สมมติว่าเรามีกรอบข้อมูลต่อไปนี้ใน R ซึ่งมีข้อมูลเกี่ยวกับนาทีที่เล่น การฟาวล์ทั้งหมด และคะแนนรวมที่ผู้เล่นบาสเก็ตบอล 10 คนทำได้:

 #create data frame
df <- data. frame (minutes=c(5, 10, 13, 14, 20, 22, 26, 34, 38, 40),
                 fouls=c(5, 5, 3, 4, 2, 1, 3, 2, 1, 1),
                 points=c(6, 8, 8, 7, 14, 10, 22, 24, 28, 30))

#view data frame
df

   minutes fouls points
1 5 5 6
2 10 5 8
3 13 3 8
4 14 4 7
5 20 2 14
6 22 1 10
7 26 3 22
8 34 2 24
9 38 1 28
10 40 1 30

สมมติว่าเราต้องการปรับโมเดลการถดถอยเชิงเส้นพหุคูณต่อไปนี้:

คะแนน = β 0 + β 1 (นาที) + β 2 (ฟาวล์)

อย่างไรก็ตาม สมมติว่าเราต้องการใช้เฉพาะแถวในกรอบข้อมูลที่ตัวแปร นาที มีค่ามากกว่า 10

เราสามารถใช้ฟังก์ชัน lm() กับอาร์กิวเมนต์เซ็ต ย่อย เพื่อให้พอดีกับโมเดลการถดถอยนี้:

 #fit multiple linear regression model (only for rows where minutes>10)
fit <- lm(points ~ fouls + minutes, data=df, subset=(minutes> 10 ))

#view model summary
summary(fit)

Call:
lm(formula = points ~ fouls + minutes, data = df, subset = (minutes > 
    10))

Residuals:
      3 4 5 6 7 8 9 10 
 1.2824 -2.5882 2.2000 -1.9118 2.3588 -1.7176 0.1824 0.1941 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -11.8353 4.9696 -2.382 0.063046 .  
fouls 1.8765 1.0791 1.739 0.142536    
minutes 0.9941 0.1159 8.575 0.000356 ***
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.255 on 5 degrees of freedom
Multiple R-squared: 0.9574, Adjusted R-squared: 0.9404 
F-statistic: 56.19 on 2 and 5 DF, p-value: 0.0003744

เราสามารถใช้ฟังก์ชัน nobs() เพื่อดูว่าจริงๆ แล้วมีการสังเกตจากกรอบข้อมูลจำนวนเท่าใดเพื่อให้เหมาะกับแบบจำลองการถดถอย:

 #view number of observations used to fit model
nobs(fit)

[1] 8

เราจะเห็นว่ามีการใช้ data frame จำนวน 8 แถวเพื่อให้พอดีกับโมเดล

หากเราดูที่กรอบข้อมูลดั้งเดิม เราจะเห็นว่า 8 แถวนั้นมีค่ามากกว่า 10 สำหรับตัวแปร นาที ซึ่งหมายความว่ามีเพียงแถวเหล่านั้นเท่านั้นที่ถูกใช้เมื่อปรับโมเดลการถดถอยให้เหมาะสม

นอกจากนี้เรายังสามารถใช้ตัวดำเนินการ & ในอาร์กิวเมนต์ เซ็ตย่อย เพื่อเซ็ตย่อยเฟรมข้อมูลตามเงื่อนไขหลายข้อ

ตัวอย่างเช่น เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อให้พอดีกับโมเดลการถดถอยโดยใช้เฉพาะแถวในกรอบข้อมูล โดยที่ นาที มากกว่า 10 และ ข้อบกพร่อง น้อยกว่า 4:

 #fit multiple linear regression model (only where minutes>10 & fouls<4)
fit <- lm(points ~ fouls + minutes, data=df, subset=(minutes> 10 & fouls< 4 ))

#view number of observations used to fit model
nobs(fit)

[1] 7

จากผลลัพธ์เราจะเห็นว่ามีการใช้ data frame จำนวน 7 แถวเพื่อให้เหมาะกับโมเดลนี้

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ ใน R:

วิธีดำเนินการถดถอยเชิงเส้นอย่างง่ายใน R
วิธีดำเนินการถดถอยเชิงเส้นพหุคูณใน R
วิธีสร้างพล็อตที่เหลือใน R

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *