2

我正在尝试使用以下方法创建变量之间的线性相关图ggplot2

dput(sum)
structure(list(Date = structure(c(15218, 15248, 15279, 15309, 
15340, 15371, 15400, 15431, 15461, 15492, 15522, 15553), class = "Date"), 
    Teams = c(87, 142, 173, 85, 76, 76, 93, 49, 169, 139, 60, 
    120), Scores = c("67101651", "62214988", "63183320", "66750198", 
    "61483322", "67546775", "75290893", "60713372", "77879142", 
    "70290302", "83201853", "83837301")), .Names = c("Date", 
"Teams", "Scores"), row.names = c(NA, 12L), class = "data.frame")

这是我的命令:

ggplot(sum, aes(x = Scores, y = Teams, group=1)) + 
    geom_smooth(method = "lm", se=TRUE, size=2, formula = lm(Teams ~ Scores))

我收到此错误:

Error in eval(expr, envir, enclos) : object 'Teams' not found

有任何想法吗?

4

2 回答 2

2

如果要指定公式,例如线性模型,请使用y ~ poly(x, 1)formula只要您想要一个简单的线性回归,就不需要更改参数(它是 的默认值method = "lm"):

ggplot(sum, aes(x = Scores, y = Teams, group = 1)) +
  geom_smooth(method = "lm", formula = y ~ poly(x, 1), se = TRUE, size = 2)

如果您不希望此变量为分类变量,我还建议您使用Scores数值 ( )。as.numeric(Scores)这将改变回归线。

Score作为分类变量:

分类的

Score作为数字变量:

数字

于 2012-09-14T18:15:56.203 回答
2

stat_cor这是从ggpubr包中使用的另一个选项。此代码将绘制您的点并显示相关性和 p 值。如果您有非正常数据,您可以将“pearson”更改为“spearman”。

ggplot(sum, aes(x = Scores, y = Teams, group = 1)) +
  geom_point(aes()) +
  geom_smooth(method = "lm", se = TRUE, size = 2) +
  stat_cor(method = "pearson", cor.coef.name = "r", vjust = 1, size = 4)
于 2021-01-23T21:51:50.960 回答