R 线性模型的事后比较

R 线性模型的事后比较,r,posthoc,emmeans,R,Posthoc,Emmeans,我正在运行一个线性模型,并希望将斜率上的一组点与0处的估计值进行比较。我的代码遵循响应的布局。输出似乎只有一个相同的p值。我希望接近0的值具有高p值,远离0的值具有小p值。我绝对没有想到在比较中会有相同的p值。有什么建议吗 玩具数据集: library(ggplot2) library(tidyr) library(emmeans) df <- structure(list(Distance = c(0, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6

我正在运行一个线性模型,并希望将斜率上的一组点与0处的估计值进行比较。我的代码遵循响应的布局。输出似乎只有一个相同的p值。我希望接近0的值具有高p值,远离0的值具有小p值。我绝对没有想到在比较中会有相同的p值。有什么建议吗

玩具数据集:

library(ggplot2)
library(tidyr)
library(emmeans)

df <- structure(list(Distance = c(0, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 8.5, 9, 9.5), 
                    Mean = c(139, 119.8, 121, 130.4, 115.9, 134.7, 134.7, 122.2, 118.8, 116.9, 114.4, 
                            109.6, 103.9, 113.2, 103.5, 113.3, 122.1, 105.9, 115.2)), row.names = c(NA, -19L), 
                class = c("tbl_df", "tbl", "data.frame"))

m <- lm(Mean ~ Distance, data = df)
df$Pred <- predict(m)

# data and predictions look ok
ggplot(df) +
    geom_point(aes(x = Distance, y = Mean)) +
    geom_line(aes(x = Distance, y = Pred)) 

# create a fake grid for emmeans
fake.df <- data.frame(Distance = 0:10)

# run a treatment vs control, where control is value at 0 and "treatment" are values
# stepping away from 0
emm <- emmeans(m, trt.vs.ctrl1 ~ Distance, data = fake.df,  
            cov.reduce = FALSE, covnest = TRUE)
emm             
库(ggplot2)
图书馆(tidyr)
图书馆(emmeans)

df在该模型中,
距离
是一个仅具有线性效应的数值预测值。因此,在两个
距离
s处比较模型估计值的任何测试都只是对
距离
趋势斜率的测试,因此所有此类测试都具有相同的P值

补遗 这个问题是混淆估计和预测有多容易的线索

估计是关于参数的;在本例中,直线的斜率是一个单一参数,使用所有数据进行估计,在两个距离处对估计值进行任何比较都相当于测试斜率的显著性

预测是关于未来数据会发生什么。为了预测这些数据,我们不仅要考虑估计斜率时的变化(在这种情况下),还要考虑未来数据中固有的变化(由RMSE估计)。如果我们确实相信误差分布是正态的,我们可以得到如下预测区间:

> emm <- emmeans(m, "Distance", at = list(Distance = c(0,2,4,6,8,10)))

> predict(emm, interval = "pred", sigma = sigma(m))
 Distance prediction   SE df lower.PL upper.PL
        0        131 8.61 17    112.5      149
        2        126 8.22 17    108.5      143
        4        121 8.02 17    104.1      138
        6        116 8.02 17     99.3      133
        8        111 8.23 17     94.0      129
       10        107 8.62 17     88.3      125

Prediction intervals and SEs are based on an error SD of 7.7904 
Confidence level used: 0.95 
emm预测(emm,interval=“pred”,sigma=sigma(m)) 距离预测SE df lower.PL upper.PL 0 131 8.61 17 112.5 149 2 126 8.22 17 108.5 143 4 121 8.02 17 104.1 138 6 116 8.02 17 99.3 133 8 111 8.23 17 94.0 129 10 107 8.62 17 88.3 125 预测间隔和SEs基于7.7904的误差SD 使用的置信水平:0.95
现在,假设我们要比较两个独立的未来观测值Y0(在距离=0和距离=2时进行)。Y0-Y2的预测值估计为131-126=5,预测的SE为sqrt(8.61^2+8.22^2)=11.90。因此Y0-Y2大约为5+/-2*11.9,或(-18.8,28.8)-包含零的间隔

然而,如果我们想比较
Y0
Y10
的未来值(在
Distance=10
处获取),我们预测(131-107)+/-2*sqrt(8.61^2+8.62^2)-->(-0.4,48.4)。这个区间仍然包括零,但几乎不包括;因此,Y10小于Y0的可能性比Y2小于Y0的可能性要大得多


我希望这有助于澄清情况。

我想知道情况是否如此。那么,这是否仅仅是因为在同一坡度上比较两个点被认为不感兴趣?统计数据不认为,人们认为是这样。请参阅我的答案附录。谢谢您的附录,这正是我需要的。