假设我们希望使用两个变量来构建模型:
set.seed(10239)
x <- rnorm(seq(1,100,1))
y <- rnorm(seq(1,100,1))
model <- lm(x~y)
class(model)
# [1] "lm"
summary(model)
#
# Call:
# lm(formula = x ~ y)
#
# Residuals:
# Min 1Q Median 3Q Max
# -3.08676 -0.63022 -0.01115 0.75280 2.35169
#
# Coefficients:
# Estimate Std. Error t value Pr(>|t|)
# (Intercept) -0.07188 0.11375 -0.632 0.529
# y 0.06999 0.12076 0.580 0.564
#
# Residual standard error: 1.117 on 98 degrees of freedom
# Multiple R-squared: 0.003416, Adjusted R-squared: -0.006754
# F-statistic: 0.3359 on 1 and 98 DF, p-value: 0.5635
您如何绘制
model
对象的F分布? 最佳答案
如果检查模型str(summary(model))
的摘要的结构,您会注意到,可以通过调用summary(model)$fstatistic
找到感兴趣的F分布的参数。列表中的第一个元素是F统计量,接下来的两个元素是分子自由度和分母自由度(按此顺序)。因此,要绘制F分布,请尝试以下操作
df <- summary(model)$fstatistic
curve(df(x, df1 = df[2], df2 = df[3]), from = 0, to = 100)
或者,您也可以从模型本身获取感兴趣的F分布的参数。分子自由度比模型中系数的数量少一,分母自由度是观察总数,比模型中系数的数量少一。
df1 <- length(model$coefficients) - 1
df2 <- length(model$residuals) - df1 - 1
curve(df(x, df1 = df1, df2 = df2), from = 0, to = 100)