在R语言中使用lm函数执行线性回归,如何获取结果中的n值?
获取线性回归模型的样本量n
嘿,这问题我经常碰到,给你分享几个简单靠谱的方法来获取线性回归的样本量n:
首先建议你先把拟合的模型和结果存到变量里,这样后续操作更方便:
# 拟合线性回归模型并保存 model <- lm(y ~ b1 + b2) # 生成模型摘要并保存 summary_model <- summary(model)
方法1:用nobs()函数(最推荐)
R里有个专门的函数nobs()可以直接返回模型的样本量,不管是传入lm对象还是它的summary对象都能生效:
# 从lm对象获取 sample_size <- nobs(model) # 或者从summary对象获取 sample_size <- nobs(summary_model)
这个函数会自动返回实际参与拟合的有效样本量(也就是剔除了含缺失值的观测后的数量),完全符合你的需求。
方法2:从模型的残差长度获取
每个参与拟合的观测都会对应一个残差值,所以残差向量的长度就是样本量:
sample_size <- length(model$residuals)
方法3:通过自由度计算
回归模型的残差自由度等于n - p(其中p是模型的参数个数,包括截距项),所以反过来就能算出n:
# 残差自由度 residual_df <- summary_model$df.residual # 模型参数个数(截距+b1+b2,共3个) param_count <- length(coef(model)) # 计算样本量 sample_size <- residual_df + param_count
内容的提问来源于stack exchange,提问作者user9848948
相关产品推荐
相关产品推荐

