ทำให้รายงาน R ปรับ R squared และ F-test ในเอาต์พุตด้วยข้อผิดพลาดมาตรฐานที่แข็งแกร่ง

Aug 18 2020

ฉันได้ประมาณแบบจำลองการถดถอยเชิงเส้นโดยใช้lm(x~y1 + y1 + ... + yn)และเพื่อตอบโต้ความยืดหยุ่นต่างกันในปัจจุบันฉันมี R ประมาณข้อผิดพลาดมาตรฐานที่แข็งแกร่งด้วย

coeftest(model, vcov = vcovHC(model, type = "HC0"))

ฉันรู้ว่า (แข็งแกร่ง) สถิติ R กำลังสองและ F จากโมเดล "ปกติ" ยังคงใช้ได้ แต่ฉันจะให้ R รายงานในเอาต์พุตได้อย่างไร ฉันต้องการหลอมรวมเอาท์พุทการถดถอยหลายรายการจากข้อกำหนดที่แตกต่างกันเข้าด้วยกันstargazerและมันจะวุ่นวายมากถ้าฉันต้องเข้าสู่โมเดลที่ไม่แข็งแรงพร้อมเพียงเพื่อให้ได้สถิติ ตามstargazerหลักการแล้วฉันต้องการป้อนผลลัพธ์การถดถอยลงในที่มีสถิติเหล่านี้ดังนั้นจึงนำเข้าสู่กรอบงาน

ขอบคุณล่วงหน้าสำหรับคำตอบทั้งหมด

คำตอบ

2 Petr Aug 18 2020 at 20:44

นี่คือวิธีดำเนินการ คุณต้องใช้โมเดลออบเจ็กต์ที่ stargazer รองรับเป็นเทมเพลตจากนั้นคุณสามารถระบุรายการที่มีข้อผิดพลาดมาตรฐานที่จะใช้:

library(dplyr)
library(lmtest)
library(stargazer)


# Basic Model ---------------------------------------------------------------------------------

model1 <- lm(hp ~ factor(gear) + qsec + cyl + factor(am), data = mtcars)
summary(model1)


# Robust standard Errors ----------------------------------------------------------------------

model_robust <- coeftest(model1, vcov = vcovHC(model1, type = "HC0"))

# Get robust standard Errors (sqrt of diagonal element of variance-covariance matrix)
se = vcovHC(model1, type = "HC0") %>% diag() %>% sqrt()

stargazer(model1, model1, 
          se = list(NULL, se), type = 'text')

การใช้แนวทางนี้ทำให้คุณสามารถใช้ stargazer ได้แม้กระทั่งกับวัตถุโมเดลที่ไม่รองรับ คุณต้องการเพียงค่าสัมประสิทธิ์ข้อผิดพลาดมาตรฐานและค่า p เป็นเวกเตอร์ จากนั้นคุณสามารถ "ใส่แบบอัตโนมัติ" ได้แม้กระทั่งรุ่นที่ไม่รองรับ

หมายเหตุสุดท้าย คุณถูกต้องที่เมื่อมีความยืดหยุ่นสูงแล้ว Rsquared ยังสามารถใช้งานได้ อย่างไรก็ตามการทดสอบ F โดยรวมและการทดสอบ t ไม่สามารถใช้ได้อีกต่อไป

1 Vincent Aug 18 2020 at 07:26

ฉันไม่มีวิธีแก้ปัญหาstargarzerแต่ฉันมีทางเลือกที่เป็นไปได้สองทางสำหรับตารางการถดถอยที่มีข้อผิดพลาดมาตรฐานที่แข็งแกร่ง:

ตัวเลือกที่ 1

ใช้modelsummaryแพคเกจเพื่อสร้างตารางของคุณ

มันมีstatistic_overrideอาร์กิวเมนต์ที่ช่วยให้คุณสามารถจัดหาฟังก์ชันที่คำนวณเมทริกซ์ความแปรปรวนร่วมของความแปรปรวนที่แข็งแกร่ง (เช่นsandwich::vcovHC.

library(modelsummary)
library(sandwich)

mod1 <- lm(drat ~ mpg, mtcars)
mod2 <- lm(drat ~ mpg + vs, mtcars)
mod3 <- lm(drat ~ mpg + vs + hp, mtcars)
models <- list(mod1, mod2, mod3)

modelsummary(models, statistic_override = vcovHC)

หมายเหตุ 1: ภาพหน้าจอด้านบนมาจากตาราง HTML แต่modelsummaryแพ็คเกจยังสามารถบันทึกตาราง Word, LaTeX หรือ markdown ได้

หมายเหตุ 2: ฉันเป็นผู้เขียนแพ็คเกจนี้ดังนั้นโปรดถือว่านี่เป็นมุมมองที่อาจมีอคติ

ทางเลือกที่ 2

ใช้estimatr::lm_robustฟังก์ชันซึ่งรวมข้อผิดพลาดมาตรฐานที่มีประสิทธิภาพโดยอัตโนมัติ ผมเชื่อว่าestimatrได้รับการสนับสนุนโดยstargazerแต่ฉันรู้modelsummaryว่ามันได้รับการสนับสนุนโดย

library(estimatr)

mod1 <- lm_robust(drat ~ mpg, mtcars)
mod2 <- lm_robust(drat ~ mpg + vs, mtcars)
mod3 <- lm_robust(drat ~ mpg + vs + hp, mtcars)
models <- list(mod1, mod2, mod3)

modelsummary(models)