[英]Extract degrees of freedom in R
我正在运行大量的线性回归,对于每个回归,我想将调整后的R平方和自由度分别保存在单独的文件中。
下面的代码对于调整后的R平方完美地做到了这一点,我可以将列表的值名称添加到文件中(这样我就可以确定R平方属于mydata的哪个子集)。 总之,它为我提供了带有列表值的一列和带有R²的一列。
对于自由度,默认情况下R给出3向量(p,np,p *)。 在此处无法添加row.name = i语句。 我只需要np。 有没有办法只保存矢量中的中间图形并将行名添加到保存的文件中?
我在下面创建了一个可复制的示例:
虚拟数据集(mydata)
v1 v2 v3
4 9 1
5 78 1
6 11 1
8 12 2
10 13 2
11 65 2
15 34 2
码:
list<-unique(mydata$v3)
for (i in 1:length(list)){
newdata <- mydata[ which(mydata$v3==i),]
reg <- lm((v1~v2), data=newdata)
write.table(summary(reg)$adj.r.square, file="rsquared.txt", append=TRUE, col.names = F, row.names=i)
write.table(summary(reg)$df, file="degreesoffreedom.txt", append=TRUE, col.names = F)
rm(reg)
rm(newdata)
}
我目前从文件“ degreesoffreedom.tx”获得的内容
"1" 2
"2" 1
"3" 2
"1" 2
"2" 2
"3" 2
我需要的是:
"1" 1
"2" 2
尝试summary(reg)$df[2]
而不是summary(reg)$df
。 请记住,R中的所有内容都是一个对象,您可以获取任何对象的子集。
第二个解决方案reg$df
。 将summary
包装在回归周围时,只会得到三个不同的DF。
该呼叫which
是不必要的,即newdata <- mydata[mydata$v3==i,]
。 根据我的经验,有99%的时间您认为自己不需要which
而不需要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.