Создание односторонней таблицы данных Excel в R - проблема с циклом my for - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь создать одностороннюю таблицу данных Excel в R, чтобы найти показатель, который минимизирует ошибки коэффициента в уравнении. У меня есть цикл for, который дает правильный результат, но он делает что-то странное, что я не могу понять.

Вот пример данных. Я буду использовать формулу Pythogrean Win из бейсбола и использовать цикл for, чтобы найти показатель, который минимизирует среднюю абсолютную ошибку в проекциях выигрышей.

## Create Data

Teams <- c("Bulls", "Sharks", "Snakes", "Dogs", "Cats")
Wins <- c(5, 3, 8, 1, 9)
Losses <- 10 - Wins
Win.Pct <- Wins/(Wins + Losses)
Points.Gained <- c(30, 50, 44, 28, 60)
Points.Allowed <- c(28, 74, 40, 92, 25)
season <- data.frame(Teams, Wins, Losses, Win.Pct, Points.Gained, Points.Allowed)
season

## Calculate Scoring Ratio

season$Score.Ratio <- with(season, Points.Gained/Points.Allowed)

## Predict Wins from Scoring Ratio

exponent <- 2

season$Predicted.Wins <- season$Score.Ratio^exponent / (1 + season$Score.Ratio^exponent)

## Calculate Mean Absolute Error

season$Abs.Error <- with(season, abs(Win.Pct - Predicted.Wins))

mae <- mean(season$Abs.Error)
mae

Вот мой цикл for, который просматривает диапазон параметров степени, чтобы увидеть, является ли какой-либо из них лучше, чем показатель степени 2, использованный выше. По какой-то странной причине, когда я запускаю цикл for, он продолжает повторять таблицу несколько раз (многие из таблиц с неверными результатами), пока, наконец, не получит правильную таблицу как последнюю. Может кто-нибудь объяснить мне, что не так с моим циклом for и почему это происходит?

## Identify potential exponent options that minimize mean absolute error

exp.options <- seq(from = 0.5, to = 3, by = 0.1)
mae.results <- data.frame("Exp" = exp.options, "Results" = NA)

for(i in 1:length(exp.options)){
    win.pct <- season$Predicted.Wins
    pred.win.pct <- 
        (season$Points.Gained/season$Points.Allowed)^exp.options[i] / 
        (1 + (season$Points.Gained/season$Points.Allowed)^exp.options[i])

    mae.results[i,2] <- mean(abs(win.pct - pred.win.pct))
    print(mae.results) 
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...