Проверка гипотез для перехватов в общих смешанных линейных моделях с R - PullRequest
0 голосов
/ 18 октября 2018

У меня есть данные фиксированных эффектов: генотипы = C, E, K, M;возраст = 30, 45, 60, 75, 90 дней;случайные эффекты: блок = 1, 2, 3;и переменная = вес_ДМ.

Файл находится в: https://drive.google.com/open?id=1_H6YZbdesK7pk5H23mZtp5KhVRKz0Ozl

У меня есть линейные и квадратичные наклоны для каждого генотипа, но у меня нет перехватов и стандартных ошибок.Код R:

library(nlme)
library(lme4)
library(car)
library(carData)
library(emmeans)
library(ggplot2)
library(Matrix)
library(multcompView)
datos_weight <- read.csv2("D:/investigacion/publicaciones/articulos-escribiendo/pennisetum/pennisetum-agronomicas/data_weight.csv",header=T, sep = ";", dec = ",")

parte_fija_3 <- formula(weight_DM 
                    ~ Genotypes 
                    + Age 
                    + I(Age^2) 
                    + Genotypes*Age 
                    + Genotypes*I(Age^2))
heterocedasticidad_5 <- varComb(varExp(form = ~fitted(.)))
correlacion_4 <- corCompSymm(form = ~ 1|Block/Genotypes)

modelo_43 <- gls(parte_fija_3, 
             weights = heterocedasticidad_5, 
             correlation = correlacion_4, 
             na.action = na.omit, 
             data = datos_weight)
anova(modelo_43)

#response
Denom. DF: 48 
                   numDF  F-value p-value
(Intercept)            1 597.3828  <.0001
Genotypes              3   2.9416  0.0424
Age                    1 471.6933  <.0001
I(Age^2)               1  22.7748  <.0001
Genotypes:Age          3   5.9425  0.0016
Genotypes:I(Age^2)     3   0.7544  0.5253

#################################
#test whether the linear age slopes of each genotype is equal to zero
################################
(tendencias_em_lin <- emtrends(modelo_43,
                           "Genotypes",
                           var = "Age"))

#response
Genotypes Age.trend        SE df lower.CL upper.CL
C          1.693331 0.2218320 48 1.247308 2.139354
E          1.459517 0.2135037 48 1.030239 1.888795
K          2.001097 0.2818587 48 1.434382 2.567811
M          1.050767 0.1301906 48 0.789001 1.312532

Confidence level used: 0.95 

(tendencias_em_lin_prueba <- update(tendencias_em_lin,
                                infer = c(TRUE,TRUE),
                                null = 0))

#response
Genotypes Age.trend        SE df lower.CL upper.CL t.ratio p.value
C          1.693331 0.2218320 48 1.247308 2.139354   7.633  <.0001
E          1.459517 0.2135037 48 1.030239 1.888795   6.836  <.0001
K          2.001097 0.2818587 48 1.434382 2.567811   7.100  <.0001
M          1.050767 0.1301906 48 0.789001 1.312532   8.071  <.0001

Confidence level used: 0.95    

########################################                                
#test differences between slope of the age linear for each genotype
########################################
CLD(tendencias_em_lin, 
    adjust = "bonferroni",
    alpha = 0.05)                                                                         

#response
Genotypes Age.trend        SE df  lower.CL upper.CL .group
M          1.050767 0.1301906 48 0.7128801 1.388653  1    
E          1.459517 0.2135037 48 0.9054057 2.013628  12   
C          1.693331 0.2218320 48 1.1176055 2.269057  12   
K          2.001097 0.2818587 48 1.2695822 2.732611   2   

Confidence level used: 0.95 
Conf-level adjustment: bonferroni method for 4 estimates 
P value adjustment: bonferroni method for 6 tests 
significance level used: alpha = 0.05 

Вопросы

  1. Как проверить, равен ли возраст пересечений каждого генотипа нулю?
  2. Как проверить различия междуперехваты возраста для каждого генотипа?
  3. Каковы стандартные ошибки перехвата каждого генотипа?

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 18 октября 2018

Вы можете ответить на эти вопросы, используя emmeans() аналогично тому, что вы сделали с emtrends().

Также посмотрите документацию на summary.emmGrid и обратите внимание, что вы можете выбрать, делать ли CI, тесты или оба.например,

emm <- emmeans(...)
summary(emm, infer = c(TRUE,TRUE))
summary(emm, infer = c(TRUE,FALSE))   # or confint(emm)
summary(emm, infer = c(FALSE,TRUE))   # or test(emm)

Истинные перехваты

Если на самом деле вы хотите фактические перехваты y, вы можете сделать это, используя

emm <- emmeans(..., at = list(age = 0))

. Прогнозы делаются в возрасте0, которые являются перехватами в уравнениях регрессии для каждого набора условий.Тем не менее, я хотел бы попытаться отговорить вас от этого, потому что (а) эти предсказания являются огромными экстраполяциями, следовательно, их стандартные ошибки также огромны;и (b) нет никакого практического смысла предсказывать ответы в возрасте 0 лет. По этой причине я думаю, что вопрос № 1 в основном не имеет смысла.

Если вы пропустите эту часть at, то emmeans() сделаетпрогнозы на средний возраст в наборе данных.Эти предсказания будут иметь намного меньшую стандартную ошибку, чем перехваты.Поскольку у вас есть взаимодействия с участием age в модели, прогнозы сравниваются по-разному в каждом возрасте.Я полагаю, что было бы полезно поместить

emm <- emmeans(..., cov.reduce = FALSE, by = "age")

, что эквивалентно использованию at для указания набора значений age, которые встречаются в наборе данных, и проведению отдельных сравнений для каждого из этих значений возраста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...