bestsource

gg 그림에 회귀선 추가

bestsource 2023. 6. 13. 22:28
반응형

gg 그림에 회귀선 추가

저는 gg plot에 회귀선을 추가하려고 노력하고 있습니다.저는 처음에 오프라인으로 시도했지만, 그것을 작동시키지 못했습니다.그리고 나서 이걸 시도했습니다...

data = data.frame(x.plot=rep(seq(1,5),10),y.plot=rnorm(50))
ggplot(data,aes(x.plot,y.plot))+stat_summary(fun.data=mean_cl_normal) +
   geom_smooth(method='lm',formula=data$y.plot~data$x.plot)

하지만 그것도 효과가 없습니다.

일반적으로 자신만의 공식을 제공하려면 인수를 사용해야 합니다.x그리고.y에서 제공한 값에 해당합니다.ggplot()이 경우에는x로 해석됩니다.x.plot그리고.y~하듯이y.plot평활화 방법 및 공식에 대한 자세한 내용은 함수의 도움말 페이지를 통해 확인할 수 있습니다.stat_smooth()에서 사용되는 기본 상태이므로geom_smooth().

ggplot(data,aes(x.plot, y.plot)) +
  stat_summary(fun.data=mean_cl_normal) + 
  geom_smooth(method='lm', formula= y~x)

에서 제공한 것과 동일한 x 및 y 값을 사용하는 경우ggplot()호출하고 선형 회귀선을 표시해야 합니다. 그러면 내부에 공식을 사용할 필요가 없습니다.geom_smooth()그냥 공급합니다.method="lm".

ggplot(data,aes(x.plot, y.plot)) +
  stat_summary(fun.data= mean_cl_normal) + 
  geom_smooth(method='lm')

가 방금 파악한 바와 같이, 다중 선형 회귀 분석에 적합한 모형이 있는 경우 위에서 언급한 솔루션은 작동하지 않습니다.

원래 데이터 프레임의 예측 값을 포함하는 데이터 프레임으로 라인을 수동으로 생성해야 합니다(이 경우).data).

다음과 같이 표시됩니다.

# read dataset
df = mtcars

# create multiple linear model
lm_fit <- lm(mpg ~ cyl + hp, data=df)
summary(lm_fit)

# save predictions of the model in the new data frame 
# together with variable you want to plot against
predicted_df <- data.frame(mpg_pred = predict(lm_fit, df), hp=df$hp)

# this is the predicted line of multiple linear regression
ggplot(data = df, aes(x = mpg, y = hp)) + 
  geom_point(color='blue') +
  geom_line(color='red',data = predicted_df, aes(x=mpg_pred, y=hp))

다중 LR

# this is predicted line comparing only chosen variables
ggplot(data = df, aes(x = mpg, y = hp)) + 
  geom_point(color='blue') +
  geom_smooth(method = "lm", se = FALSE)

단일 LR

단순하고 다재다능한 솔루션은 다음을 사용하여 선을 긋는 것입니다.slope그리고.intercept산점도를 사용한 예제 및lm객체:

library(tidyverse)
petal.lm <- lm(Petal.Length ~ Petal.Width, iris)

ggplot(iris, aes(x = Petal.Width, y = Petal.Length)) + 
  geom_point() + 
  geom_abline(slope = coef(petal.lm)[["Petal.Width"]], 
              intercept = coef(petal.lm)[["(Intercept)"]])

예제 그림

coef에 제공된 공식의 계수를 추출하는 데 사용됩니다.lm표시할 다른 선형 모형 객체 또는 선이 있는 경우에는 기울기와 절편 값을 연결하기만 하면 됩니다.

블로그에서 이 기능을 찾았습니다.

 ggplotRegression <- function (fit) {

    `require(ggplot2)

    ggplot(fit$model, aes_string(x = names(fit$model)[2], y = names(fit$model)[1])) + 
      geom_point() +
      stat_smooth(method = "lm", col = "red") +
      labs(title = paste("Adj R2 = ",signif(summary(fit)$adj.r.squared, 5),
                         "Intercept =",signif(fit$coef[[1]],5 ),
                         " Slope =",signif(fit$coef[[2]], 5),
                         " P =",signif(summary(fit)$coef[2,4], 5)))
    }`

기능을 로드한 후에는 간단하게

ggplotRegression(fit)

당신은 또한 할 수 있습니다.ggplotregression( y ~ x + z + Q, data)

이게 도움이 되길 바랍니다.

로지스틱 모형을 사용하는 선량-반응 곡선과 같이 다른 유형의 모형을 적합시키려면 보다 부드러운 회귀선을 사용하려면 함수 예측을 사용하여 더 많은 데이터 점을 만들어야 합니다.

적합: 로지스틱 회귀 분석 곡선의 적합

#Create a range of doses:
mm <- data.frame(DOSE = seq(0, max(data$DOSE), length.out = 100))
#Create a new data frame for ggplot using predict and your range of new 
#doses:
fit.ggplot=data.frame(y=predict(fit, newdata=mm),x=mm$DOSE)

ggplot(data=data,aes(x=log10(DOSE),y=log(viability)))+geom_point()+
geom_line(data=fit.ggplot,aes(x=log10(x),y=log(y)))

회귀선을 추가하기 위해 gem_line()을 사용하는 또 다른 방법은 적합치를 가져오기 위해 브룸 패키지를 사용하고 여기에 표시된 것처럼 https://cmdlinetips.com/2022/06/add-regression-line-to-scatterplot-ggplot2/ 을 사용하는 것입니다.

언급URL : https://stackoverflow.com/questions/15633714/adding-a-regression-line-on-a-ggplot

반응형