Мой цикл for, который я создал, рассчитывает ожидаемое значение по наблюдаемым значениям и сохраняет его в новой таблице непредвиденных обстоятельств (дубликат, который я сделал ранее).
Чтобы рассчитать ожидаемое, вы умножаете сумму строки и сумму столбцов на сумму.
Я создал цикл for, вложенный в другой цикл for, который проходит через наблюдаемую таблицу непредвиденных обстоятельств и вычисляет ожидаемое значение, затем сохраняет его в новой ожидаемой таблице, однако при выполнении кода он вычисляет только последнюю итерацию или из данных [3,3].
The observed table w added margins:
Frequently Never Rarely Sum
Conservative 15 214 47 276
Liberal 119 479 173 771
Other 85 172 45 302
Sum 219 865 265 1349
The expected table:
Frequently Never Rarely
Conservative 15 214 47
Liberal 119 479 173
Other 85 172 45
viewsandpot - это данные, которые я назвал, я уже прочитал в виде файла (так что это таблица).
expecteddata <- function(rawdata){
observedtable <- table(factor(rawdata[,2]), factor(rawdata[,1]))
observedtable <- addmargins(observedtable)
expectedtable <- observedtable
i <- 1
j <- 1
ncol <- ncol(observedtable)
nrow <- nrow(observedtable)
for(i in nrow-1){
j <- 1
for(j in ncol-1){
expectedtable[i,j] <- (observedtable[i, ncol]*observedtable[nrow, j])/observedtable[ncol, nrow]
j <- j+1
}
}
return(expectedtable)
}
expecteddata(viewsandpot)
Таблица ожидаемых значений должна быть похожа на наблюдаемый счет, но заменена на вычисленные значения (числа должны отличаться).
Работает только последняя итерация - результат, полученный из кода:
Frequently Never Rarely
Conservative 15.00000 214.00000 47.00000
Liberal 119.00000 479.00000 173.00000
Other 85.00000 172.00000 59.32543
Итак, 59,325 - это единственное другое число.
Не уверен, почему циклы не работают, учитывая, что внутренний цикл for сначала заменяет весь первый ряд, а затем переходит к следующему ряду.