簡體   English   中英

如何在 coplot 中的數據上繪制回歸或 LOWESS 線

[英]How to plot regression or LOWESS lines over data in coplot

在數據上繪制一條線(例如,擬合回歸線或非參數 LOWESS 線)通常很有幫助。 同樣,當變量被混淆時,繪制 x1, y 數據按 x2 分層通常很有幫助。 但是,我不太清楚如何使用?coplot將兩者結合起來。 這在格子中應該很自然,但我似乎也無法弄清楚如何在那里做到這一點。

以下提供了一些可供使用的數據:

library(MASS)
set.seed(7422)
X <- mvrnorm(100, mu=c(5,5), Sigma=rbind(c(2.0, 1.9),
                                         c(1.9, 2.0) ) )
x1 <- X[,1];  x2 <- X[,2]
y <- 3 + .6*x1 - .4*x2 + rnorm(100)
m <- lm(y~x1+x2)
summary(m)$coefficients
#               Estimate Std. Error   t value     Pr(>|t|)
# (Intercept)  3.8281801  0.4022204  9.517619 1.476519e-15
# x1           0.5466495  0.2060269  2.653292 9.314673e-03
# x2          -0.4835804  0.2139542 -2.260205 2.604451e-02
windows()
  pairs(cbind(y, x1, x2))
xs <- seq(1.6, 9.2, by=.1)
windows()
  plot(y~x2)
  lines(xs, predict(m, data.frame(x1=5.2, x2=xs)), col="blue")
windows()
  coplot(y~x2|x1)
  ## doesn't work (lines on plot were drawn by hand)
  # lines(xs, predict(m, data.frame(x1=mean(x1[subscripts], x2=xs)), col="blue")
  # lines(lowess(y~x2, subset=x1[subscripts]), col="gray")

原始數據的散點圖矩陣:

原始數據的散點圖矩陣

這是x2y的邊緣圖,擬合回歸線和繪制在數據頂部的邊緣 LOWESS 線。 對於不精通統計學的人來說,這看起來很奇怪。

x2 與 y 的邊際圖,帶有擬合回歸線和邊際 LOWESS

這就是我的想法。 這是一個coplot,具有回歸模型和適合每個面板內繪制的每個數據層的LOWESS線。

帶有回歸線和條件 LOWESSes 重疊的 coplot

要使用coplot執行此操作,您需要定義自己的面板函數 默認功能是points剛剛繪出了點,但你可以添加一個回歸線,並用一個簡單的函數曲線LOWESS。

PointsWithReg = function(x, y, pch=20, col=1, ...) {
    points(x=x, y=y, col=col, pch=pch, type="p", ...)
    abline(lm(y ~ x))
    lines(lowess(x=x, y=y), col="blue")
}

coplot(y~x2|x1, panel=PointsWithReg, pch=16)

帶有回歸線和 Lowess 的 Coplot

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM