Так как все остальные значения являются постоянными, мы можем написать функцию ncp
, которая просто принимает аргумент df
ncp=function(df){
sapply(c(alpha[1], alpha[2]), # Root finding
function(x) uniroot(f, c(-q, q+15), alpha = x, q = q, df = df)[[1]]/sqrt(30))
}
ncp(29)
[1] 0.1592547 0.9280011
После этого вы можете написать функцию, которая принимает абсолютную разницу значений ncp, и мы вычтем
m=function(df,y=0){
abs(abs(diff(ncp(df)))-y)
}
Короче
, m(df,0)
дает абсолютную разницу по сравнению с нулем. тогда как m(df,0.4)
будет абсолютной разностью значений ncp - 0,4. Наша цель - минимизировать эту разницу абсолютных значений и y. Я подробно остановлюсь на этом.
При минимизации функции m с соответствующим значением y:
Например, давайте попробуем найти df
, в котором все остальные (альфа и q) остаются постоянными, так что абсолютная разница значений ncp равна 1:
(a=optimise(m,c(1,100000),y=1))#default for minimization ie maximum=FALSE
$`minimum`
[1] 4.415955
$objective
[1] 3.798379e-08
Целевое значение равно 0, поэтому мы нашли правильное значение df, так как мы минимизировали.
ncp(a$minimum)
[1] 0.03385211 1.03385215
Из приведенных выше значений ncp вы можете сказать, что разница между этими двумя значениями действительно равна 1. Таким образом, df = 4.415955 даст нам абсолютную разницу ncp, равную 1, с указанными выше значениями alpha и q
b=ncp(a$minimum)
abs(b[2]-b[1])
[1] 1
так что я тоже могу сделать:
m(a$minimum)
[1] 1
Я склонен полагать, что теперь ясно, что означает y в качестве аргумента m
.
Теперь, чтобы найти разницу в 0,4, мы просто делаем то же самое:
optimise(m,c(1,1000000),y=0.4,maximum = F)
$`minimum`
[1] 1e+06
$objective
[1] 0.315684
Что касается этого, мы видим, что объективное значение не равно нулю, поэтому мы не сходились. Даже если мы увеличим наш диапазон, цель не изменится. Это означает, что наименьшая разница равна objective(0.315684) +0.4 =0.715684
. Это наименьшая абсолютная разница для значений ncp с этими альфа и q. т.е.
m(Inf)
[1] 0.7156824
Таким образом, мы не можем иметь абсолютную разницу 0,4, но если мы изменим альфа и q, мы получим абсолютную разницу 0,4
Для всех значений oy y
таких, что m(Inf)<y<m(1)
, мы получим df, который будет удовлетворять условию