【问题标题】:Different best fit, and obtain p-value from regression in R不同的最佳拟合,并从 R 中的回归中获得 p 值
【发布时间】:2016-03-18 15:07:10
【问题描述】:

我有这张图表,来自包car,图1:

代码是:

scatterplot(istat_22 ~ vpa_cnr_2,grid=F, smooth=F)

但是如果我想要回归线的 p 值,以及 r 和 r^2,我如何获得它并将它们绘制在图表上? 基本上我会直线方程和统计值。 另一个问题是,为什么如果我使用lm 进行绘图,例如:

plot(vpa_cnr_2,istat_22)
abline(lm(vpa_cnr_2 ~ istat_22),col="red")

直线与图1不一样(见图2)?

图 2

是的,我知道,这取决于截距,但 R 找不到最适合函数 lm 的?

【问题讨论】:

  • car::scatterplot 返回点列表(通过id.method等)或NULL;它不提供返回任何摘要统计信息。正如您所怀疑的,您需要自己执行回归。 (如果您查看car::scatterplot.default 和最终car:::reg 的来源,您会发现汇总统计信息未保留。)

标签: r scatter-plot lm


【解决方案1】:

如果您想在图表中显示它们,我会使用模型的调整后 R 平方和整体 p 值,这可以直接从模型摘要中获得或计算。

summary <- summary(lm(istat_22 ~ via_cnr_2)) adjRsq <- summary$adj.r.squared

您无法直接从摘要中获得整体 p 值,但您可以从 F 统计量中计算,以下是计算方法:

fStat <- summary$statistic pValue <- pf(fStat[1], fStat[2], fStat[3], lower.tail = F)

您可以参考此链接:Adding Regression Line Equation and R2 on graph 了解如何在 ggplot 中标记它们。至于为什么回归线看起来不正确,那是因为你的变量在 lm 公式中被还原了。 abline(lm(istat_22 ~ vpa_cnr_2),col="red")

【讨论】:

  • 是的,对于第二个问题,您是对的...ups...但是对于 p 值? (问题一)
  • 刚刚重新编辑了我的答案,希望它能回答你的问题。
【解决方案2】:

如果您想从线性回归中提取值,可以使用summary

#use str(summary(x)) to explore the other useful pieces of information
x <- lm(istat_22 ~ vpa_cnr_2)
summary(x)$r.squared
summary(x)$adj.r.squared
summary(x)$coefficients[2,4] # p-value

【讨论】:

    猜你喜欢
    • 2016-08-17
    • 1970-01-01
    • 2022-07-06
    • 2017-04-25
    • 1970-01-01
    • 2020-07-24
    • 2018-08-28
    • 1970-01-01
    • 2020-11-01
    相关资源
    最近更新 更多