这是类coeftest
m = lm(data=mtcars, cyl ~ disp * wt * hp)
coef = coeftest(m, vcov=sandwich(m))
t test of coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.0462e+00 1.4281e+00 5.6342 8.431e-06 ***
disp -3.9661e-03 1.7331e-02 -0.2288 0.820929
wt -2.8621e+00 5.2758e-01 -5.4250 1.423e-05 ***
hp -4.5629e-02 9.5038e-03 -4.8011 6.887e-05 ***
disp:wt 9.6036e-03 4.5263e-03 2.1218 0.044377 *
disp:hp 1.1880e-04 7.8606e-05 1.5114 0.143742
wt:hp 2.5839e-02 3.6615e-03 7.0569 2.697e-07 ***
disp:wt:hp -7.2312e-05 2.0855e-05 -3.4674 0.001997 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
我想提取整个对象或仅提取其中的矩阵(带星星)。我尝试使用write
,write.table
,writeLines
和cat
,但都没有效果。
我找到的唯一解决方案就是这个:
coef = coef[1:nrow(coef), 1:ncol(coef)]
cat(file=path, x=coef, append=T, quote=F)
但这样做会消除星星(重要代码)。
答案 0 :(得分:3)
目前还不完全清楚你想要什么,但这里有两个选择。我们从这开始:
library(lmtest)
library(sandwich)
m <- lm(data=mtcars, cyl ~ disp * wt * hp)
coef <- coeftest(m, vcov=sandwich(m))
capture.output
这符合标题中要求的内容,并且非常直截了当。以下将创建一个名为“test.txt”的文件,其中包含coef
的输出。
capture.output(coef, file="test.txt")
write.csv
星星实际上并不是数据的一部分,而是处理打印方法。 (有关详细信息,请参阅printCoefmat
的代码)。但是,我们可以创建这些星星的矢量,并将cbind
创建到输出中,然后将其写入CSV文件。
stars <- symnum(coef[, ncol(coef)], corr = FALSE, na = FALSE,
cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1),
symbols = c("***", "**", "*", ".", " "))
out <- cbind(as.data.frame.matrix(coef), Stars = format(stars))
write.csv(out, "test.csv")