Я пишу циклы или функции в R, и я до сих пор не понял, как это сделать. В настоящее время мне нужно написать цикл / функцию (не уверен, какая из них лучше), чтобы создать несколько результатов формулы смешанных моделей в тесте перестановок или рандомизации
образец набора данных выглядит так:
dataset <- read.table(text =
"ID A_2 B_2 C_2 A_1 B_1 C_1 chkgp
M1 10 20 60 30 54 33 Treatment
M1 20 50 40 33 31 44 Placebo
M2 40 80 40 23 15 66 Placebo
M2 30 90 40 67 67 66 Treatment
M3 30 10 20 22 89 77 Treatment
M3 40 50 30 44 50 88 Placebo
M4 40 30 40 42 34 99 Treatment
M4 30 40 50 33 60 80 Placebo",header = TRUE, stringsAsFactors = FALSE)
У меня есть переменная shuffle chkgp при каждом запуске модели и используется следующий код
mod1<-summary(lmerTest::lmer(A_2~B_1+sample(chkgp)+(1|ID),data = dataset))
mod1
P_value= 2 * (1 - pnorm(abs(mod1$coefficients[3, 4])))
P_value
результат модель 1 после случайного перемешивания 1 раз
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: A_2 ~ B_1 + sample(chkgp) + (1 | ID)
Data: dataset
REML criterion at convergence: 44.7
Scaled residuals:
Min 1Q Median 3Q Max
-0.7792 -0.4441 0.1185 0.3893 0.7734
Random effects:
Groups Name Variance Std.Dev.
ID (Intercept) 122.52 11.069
Residual 10.15 3.186
Number of obs: 8, groups: ID, 4
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 42.87450 6.49941 4.06743 6.597 0.00258 **
B_1 -0.27492 0.09149 7.97033 -3.005 0.01702 *
sample(chkgp)Treatment 1.74313 4.71095 8.33366 0.370 0.72060
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) B_1
B_1 -0.433
smpl(chkg)T 0.164 -0.748
[1] 0.7113693
Вопрос 1: Мне нужно выяснить, как сравнивать и проверять фактическое значение P одинаково даже после перестановки переменной chkgp 1000
вопрос 2: мне нужно написать 1000 циклических моделей запуска, в каждой из которых необходимо перемешать переменную chkgp.