【问题标题】:Fit a line to small multiples将一条线拟合到小的倍数
【发布时间】:2018-03-22 10:04:49
【问题描述】:

我想在共享图上拟合一条穿过采样分布均值的线。这段代码创建了一个与我正在使用的数据集相似的数据集。它创建一个抽样分布并将分布绘制在相同的图表上。然后,我画一条穿过分布平均值的线。但是,我想要一条适合所有分布均值的线。我在想this graphic found here之类的东西。

means<-c(NULL)

sample<-rnorm(1000,-0.2,0.1)
A<-hist(sample,plot=FALSE)
means<-c(means,mean(sample))
sample<-rnorm(1000,-0.1,0.1)

B<-hist(sample,plot=FALSE)
means<-c(means,mean(sample))

sample<-rnorm(1000,0,0.1)
C<-hist(sample,plot=FALSE)
means<-c(means,mean(sample))

sample<-rnorm(1000,0.1,0.1)
D<-hist(sample,plot=FALSE)
means<-c(means,mean(sample))

sample<-rnorm(1000,0.2,0.1)
E<-hist(sample,plot=FALSE)
means<-c(means,mean(sample))


plot(NULL,type="n",
     xlim=c(0,1250),
     ylim=c(min(A$breaks,B$breaks,C$breaks,D$breaks,E$breaks),
            max(A$breaks,B$breaks,C$breaks,D$breaks,E$breaks)),
     xaxt="n",
     xlab="Mean",
     ylab="Sampling Distribution of The Mean")
labels<-c("-0.2","-0.1","0","0.1","0.2")

y.coord<-0
rect(y.coord, A$breaks[1:(length(A$breaks) - 1)], A$counts, A$breaks[2:length(A$breaks)])
axis(side=1,at=y.coord,labels=labels[1],las=3)

y.coord<-max(A$counts)+50
rect(y.coord, B$breaks[1:(length(B$breaks) - 1)], y.coord+B$counts, B$breaks[2:length(B$breaks)])
axis(side=1,at=y.coord,labels=labels[2],las=3)

y.coord<-y.coord+max(B$counts)+50
rect(y.coord, C$breaks[1:(length(C$breaks) - 1)], y.coord+C$counts, C$breaks[2:length(C$breaks)])
axis(side=1,at=y.coord,labels=labels[3],las=3)

y.coord<-y.coord+max(C$counts)+50
rect(y.coord, D$breaks[1:(length(D$breaks) - 1)], y.coord+D$counts, D$breaks[2:length(D$breaks)])
axis(side=1,at=y.coord,labels=labels[4],las=3)

y.coord<-y.coord+max(D$counts)+50
rect(y.coord, E$breaks[1:(length(E$breaks) - 1)], y.coord+E$counts, E$breaks[2:length(E$breaks)])
axis(side=1,at=y.coord,labels=labels[5],las=3)

abline(a=means[1],b=0,col="red")
abline(a=means[2],b=0,col="red")
abline(a=means[3],b=0,col="red")
abline(a=means[4],b=0,col="red")
abline(a=means[5],b=0,col="red")

这个问题是我的问题here 的后续问题。如您所见,我创建了一个变通方法来绘制所有小倍数。但是,我仍然在拟合线方面遇到问题。

感谢您考虑这个问题。

【问题讨论】:

  • 为了澄清,您正在寻找显示所有组合数据趋势的线?在您链接到的图形中,它会是方程式的线吗?
  • 是的,这条线有效。等式也很好,但不是必需的。认为各个分布是误差方差。

标签: r plot data-visualization distribution statistical-sampling


【解决方案1】:

我知道lines()abline() 会添加一行,但由于某种原因,我所有的虚拟尝试都搞砸了。然后我再次查看了您的代码,这次我看到 x 轴实际上不是 -0.2 - 0.2,而是 0 - 1250。这就是为什么我在计算机上的尝试几乎是垂直线的原因。

所以,考虑到这一点:

x_line_val <- seq(1, 1250, length.out=5)
abline(lm(means ~ x_line_val), col="blue")

您也可以使用lines(x=x_line_val, y=means) 而不是abline(),这条线更像是一条线段。

要在图中打印线方程,这是一种骨架,但您可以自定义它:

figs1 <- summary(lm(means~x_line_val))$coef[c(1,2)] #get your intercept and beta1 values
eq1 <- paste0("y ~ ",round(figs1[1],5)," + x",round(figs1[2],5)) #write out equation
text(x=600, y=0.48, labels=eq1) #add equation to plot

当然,这个等式是针对一个 x/独立值,其比例比你所说明的要大几个数量级,所以我认为这个等式真的不正确。至少它实际上并不代表图表显示的内容。因此,您需要进行新的回归,其中“x_line_val”被正确比例的新版本替换。

【讨论】:

    猜你喜欢
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 2017-04-02
    • 2015-01-07
    • 1970-01-01
    相关资源
    最近更新 更多