Оценка параметров модели экспоненциального убывания, где DV зависят от суммы различных временных рядов в R - PullRequest
4 голосов
/ 29 июня 2019

Я хотел бы знать, как приступить к следующему нелинейному регрессионному анализу, который является упрощенной версией моей реальной проблемы.

5 Участники, которых попросили наблюдать за скоростью трех разных автомобилей: Audis, VWs и Porsches за десять секунд. Это дает мне следующий набор данных:

S_t_c <- read.table(text = "
 time     S_c_1  S_c_2     S_c_3 
     1      20    15         40 
     2      45    30         50 
     3      60    45         60 
     4      75    60         60 
     5      90    70         60 
     6     105    70         90 
     7     120    70        120 
     8     125    70        140 
     9     130    70        160 
    10     145    70        180 
           ",header = T)

После наблюдения последних 10 секунд 5 участников попросили угадать, как быстро машина будет двигаться в момент времени t = 11. Это дает мне эти данные:

S_11_i_c <-read.table(text = "
             i     c_1    c_2       c_3 
             1     150    70        190 
             2     155    70        200 
             3     150    75        195 
             4     160    80        190 
             5     150    75        180 
               ",header = T)

Теперь я хочу выполнить нелинейную регрессию для оценки свободных параметров следующей модели:

image

image

Индексы означают:

i= participant
c=car brand
s=time

Моими проблемами являются суммы, а также тот факт, что мне приходится оценивать параметры на основе трех разных наборов наблюдений (для каждого автомобиля). Поэтому я не знаю, как кодировать суммы в регрессию, и у меня есть проблемы с тем фактом, что мои DV зависят от разных IV временных рядов. Я хотел бы узнать, как это сделать в R.

РЕДАКТИРОВАТЬ: Попытка решения проблемы.

На данный момент мне удалось написать w_s и Sum_S:

function (x) {
    x = 0
    for (j in 0:9) {
    x <- x+ x^j
    }
}


w_s = beta_2^s / function(beta_2)

Sum_S_t_c <- data.frame(
    s = seq(1:9),
    c_1 = rnorm(9)  
    c_2 = rnorm(9)
    c_3 = rnorm(9)

)

Sum_S_t_c = 0
for (c in 2:4) {
    for (s in 0:9) {  
    Sum_S_t_c[s,c] <- Sum_S_t_c + S_t_c[10-s, c] 
    Sum_S_t_c = Sum_S_t_c[s,c]
    }
}

Теперь мне как-то нужно подогнать эти переменные в нелинейную регрессию. Это будет мой фиктивный код для этого:

For (c in 2:4) {
    for (i in 1:5) {
        for (s in 0:9) {    

        S_11_i_c ~ beta_0 +  beta_1 * Sum_S_t_c[s,c] * beta_2^s / function(beta_2)

        }
    }
}

Мне также нужно установить верхний и нижний предел для beta_2, что я не знаю, как это сделать. Мне также интересно, возможно ли вообще использовать функцию в рамках регрессии?

Edit:

Должен ли я как-то сгруппировать DV и IVS? Если да, можно ли сгруппировать переменные двух разных таблиц данных?

...