所以我有一个数据集,其中有一个变量“ Date”,其值为“ 1、2、3,...,182”。然后我有另一个变量,该变量增加1或0。所以它变成“ 0、1、2、2、2、3、4,...等,直到95。”
我进行了回归分析,一切正常。但是我似乎无法获得线函数或R平方值。通常您会使用类似的
lm_eq <- lm(var1 ~var2 + var3)
summary(lm_eq)
,您将获得所有数据。但是我已经使用ggplot进行回归了,
t1 = ggplot() +
geom_line(data = odds, aes(x = Date, y = RorderOT1), colour="red") +
geom_smooth(data = odds, aes(x = Date, y = RorderOT1), colour="red") +
xlab('Match points') +
ylab('Number of outcomes')
print(t1)
summary(t1)
但是在这里,summary函数根本没有提供line函数,R平方值或任何其他结果。
我尝试环顾四周,但是所有答案都是关于如何将结果输入图表的方法。我不想要那样,我只想要您在R中进行正常回归时通常获得的结果。我也尝试使用常规编码,但是该回归似乎与一个ggplot对我不匹配。 / p>
那么有什么简单的方法可以像往常一样获得结果,还是我需要在代码中指定一些内容?
答案 0 :(得分:1)
您说您已使用ggplot进行回归,但尚未使用。您已使用ggplot在数据上绘制回归线。
是的,内部ggplot将必须执行回归以生成线,但其工作不是返回可用于数学描述结果的模型对象。它的工作是在正确的位置画一条线。进行ggplot的summary
时看到的内容是对制作完全可自定义绘图所涉及的许多元素的总结。回归线只是其中的一小部分,不应期望ggplot对象为您提供适当线性回归模型的所有功能。
您已经在问题中给出了答案。您需要进行单独的回归。
首先,我将加载ggplot并创建一些可复制的假数据,这些数据应与您的数据非常匹配:
library(ggplot2)
set.seed(69)
odds <- data.frame(Date = 1:182, RorderOT1 = cumsum(rbinom(182, 1, 0.5)))
然后创建图。请注意,如果您希望回归直线,则需要在method = "lm"
中指定geom_smooth
:
ggplot(data = odds) +
geom_line(aes(x = Date, y = RorderOT1), colour="red") +
geom_smooth(method = "lm", aes(x = Date, y = RorderOT1), colour="red") +
xlab('Match points') +
ylab('Number of outcomes')
现在您可以分别进行回归了:
my_model <- lm(RorderOT1 ~ Date, data = odds)
summary(my_model)
#>
#> Call:
#> lm(formula = RorderOT1 ~ Date, data = odds)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -4.3970 -1.9570 0.1362 1.9126 3.6045
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -1.610528 0.321253 -5.013 1.27e-06 ***
#> Date 0.514329 0.003045 168.924 < 2e-16 ***
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 2.158 on 180 degrees of freedom
#> Multiple R-squared: 0.9937, Adjusted R-squared: 0.9937
#> F-statistic: 2.854e+04 on 1 and 180 DF, p-value: < 2.2e-16
现在,您可以浏览有关回归的所有信息,将其插入predict
函数,将拟合与其他模型进行比较,查看其协方差矩阵等,因为它是模型对象。
由reprex package(v0.3.0)于2020-05-06创建