จะใช้ตุ้มน้ำหนักในฟังก์ชั่น lm ใน R ได้อย่างไร?


21

ใครช่วยเสนอตัวชี้วิธีการใช้weightsอาร์กิวเมนต์ในlmฟังก์ชั่นของ R ? ตัวอย่างเช่นคุณกำลังพยายามปรับนางแบบให้สอดคล้องกับข้อมูลการจราจรและคุณมีหลายร้อยแถวซึ่งแต่ละเมืองเป็นตัวแทนของเมือง (มีประชากรแตกต่างกัน) หากคุณต้องการให้แบบจำลองปรับอิทธิพลสัมพัทธ์ของการสังเกตแต่ละครั้งตามขนาดประชากรคุณสามารถระบุได้weights=[the column containing the city's population]หรือไม่ นั่นคือการเรียงตัวของเวกเตอร์ที่สามารถเข้าไปได้weightsหรือไม่? หรือคุณจะต้องใช้ฟังก์ชั่น R / แพ็คเกจ / แนวทางอื่นโดยสิ้นเชิง?

อยากรู้ว่าคนจัดการเรื่องนี้อย่างไร - ไม่เห็นว่ามันครอบคลุมในบทเรียนการสร้างแบบจำลองเชิงเส้นใด ๆ ที่ฉันเห็นที่นั่น ขอบคุณ!

คำตอบ:


17

ฉันคิดว่า R หน้าช่วยเหลือในการlmตอบคำถามของคุณค่อนข้างดี ข้อกำหนดเฉพาะสำหรับน้ำหนักคือเวกเตอร์ที่ระบุต้องมีความยาวเท่ากับข้อมูล คุณสามารถระบุชื่อของตัวแปรในชุดข้อมูลเท่านั้น R จะดูแลส่วนที่เหลือการจัดการ NA ฯลฯ คุณยังสามารถใช้สูตรในweightอาร์กิวเมนต์ได้ นี่คือตัวอย่าง:

x <-c(rnorm(10),NA)
df <- data.frame(y=1+2*x+rnorm(11)/2, x=x, wght1=1:11)

## Fancy weights as numeric vector
summary(lm(y~x,data=df,weights=(df$wght1)^(3/4))) 

# Fancy weights as formula on column of the data set
summary(lm(y~x,data=df,weights=I(wght1^(3/4))))

# Mundane weights as the column of the data set
summary(lm(y~x,data=df,weights=wght1))

โปรดทราบว่าน้ำหนักจะต้องเป็นค่าบวกมิฉะนั้น R จะสร้างข้อผิดพลาด


แต่น้ำหนักต้องรวมเป็นหนึ่งหรือไม่ ฉันได้รับผลลัพธ์ที่แตกต่างกันในการlmสรุปของฉันหากพวกเขามีการปรับขนาดเทียบกับไม่ได้ ...
Palace Chan

ไม่น้ำหนักไม่จำเป็นต้องรวมเป็นหนึ่ง lmสรุปแตกต่างกันอย่างไร ค่าสัมประสิทธิ์หรือข้อผิดพลาดมาตรฐาน?
mpiktas

ส่วนที่เหลือและข้อผิดพลาดมาตรฐานของพวกเขาแตกต่างกัน แต่ค่าสัมประสิทธิ์และข้อผิดพลาดของพวกเขาไม่ได้
วังจันทร์

3

สิ่งที่คุณแนะนำควรใช้งานได้ ดูว่าสิ่งนี้สมเหตุสมผลหรือไม่:

lm(c(8000, 50000, 116000) ~ c(6, 7, 8))
lm(c(8000, 50000, 116000) ~ c(6, 7, 8), weight = c(123, 123, 246))
lm(c(8000, 50000, 116000, 116000) ~ c(6, 7, 8, 8))

บรรทัดที่สองสร้างจุดตัดและความชันเดียวกันกับบรรทัดที่สาม (แตกต่างจากผลลัพธ์ของบรรทัดแรก) โดยให้การสังเกตหนึ่งครั้งมีน้ำหนักสองเท่าของการสังเกตอีกสองครั้งคล้ายกันกับผลกระทบของการทำซ้ำการสังเกตที่สาม


ฉันลองแล้ว แต่พบว่าsummaryเอาต์พุตแตกต่างกันสำหรับบรรทัดที่ 2 และ 3 โดยเฉพาะอย่างยิ่งสำหรับ p-value ของสัมประสิทธิ์ฉันสงสัยว่าสิ่งนี้จะเกิดขึ้นหากคำสั่ง 2 อ้างถึงชุดข้อมูลเดียวกัน ฉันโพสต์คำถามเกี่ยวกับเรื่องนี้ที่stackoverflow.com/questions/10268689/weighted-regression-in-r
lokheart
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.