Привет У меня огромный размер данных (df), имена которых разные. Тензоры, в столбцах у меня есть значения для каждого тенора. Для последних двух тенор у меня есть некоторые недостающие строки, которые я хочу выполнить на основе данных для не пропущенных строк. Мой dataframe выглядит так:Предсказать значения dataframe в R
1095 1825 2555 3650 5475 7300 10950
0.00116034 0.00170552 0.00274189 0.00472176 0.00697495 NA NA
0.00112157 0.00188056 0.00295159 0.0050669 0.00728063 0.00816778 0.00842034
0.00138009 0.00225073 0.00339548 0.00549386 0.00780401 0.00871812 0.00897222
Я застрял в использовании pred() и lm. Я хочу получить эти недостающие значения. Извините за этот основной вопрос, но я спешу, и я застрял более часа.
Заранее спасибо.
EDIT Я хочу создать линейную модель с кадром данных, позволяет сказать df2
df2 <-df[rowSums(is.na(df)) > 0,])
И использовать предсказывает, чтобы найти недостающие значения 7300, 10950.
edit2:
Благодаря @Zheyuan Li Я прошел некоторый прогресс, но я не могу получить свои предсказанные данные, я попытался использовать два варианта:
b<-setNames(stack(df2),c("value", "Tenor"))
data.lm <- lm(value~Tenor, data = b, na.action = na.exclude)
pred<-predict(data.lm)
Если я выполняю этот код, я получаю значение pred с теми же значениями, что и b.
С другой стороны, если я использую следующий код, то получаю те же значения для всех предсказанных значений.
aov <- aov(data.lm,data=b)
pred<-predict(aov)
EDIT3:
Я адаптировал свой код и удалить последнюю колонку, чтобы сделать вещи проще. Теперь у меня есть следующие данные:
1095 1825 2555 3650 5475 7300
0.00116034 0.00170552 0.00274189 0.00472176 0.00697495 NA
0.00112157 0.00188056 0.00295159 0.0050669 0.00728063 0.00816778
0.00138009 0.00225073 0.00339548 0.00549386 0.00780401 0.00871812
Мой новый код выглядит следующим образом:
setDT(df)
variables<-setdiff(names(df),c('7300',"DATE"))
y_var<-"7300"
Line<-function (train_dat, test_dat, variables, y_var, family = "gaussian")
{
fm <- as.formula(paste(y_var, " ~", paste(variables, collapse = "+")))
glm1 <- glm(fm, data = train_dat, family = family)
pred <- predict(glm1, newdata = test_dat)
return(pred)
}
df[is.na(`7300`),`7300`:=
Line(train_dat=df[!is.na(`7300`),],
test_dat=df[is.na(`7300`)],
variables,
y_var)
]
Теперь я получаю следующее сообщение об ошибке:
Error in terms.formula(formula, data = data) :
invalid term in model formula
Вы знаете, как решить эту проблему ?
Если вы хотите, чтобы приписывать его на основе '' mean', median' и т.д. из column, check 'na.aggregate' from' zoo' – akrun
Я хочу создать линейную модель на основе строк с полными данными. Я не хочу только экстраполировать, основываясь на именах фреймворка данных, но использовать те же самые движения для известных строк. Так понятно? – arodrisa
ну, вы должны работать на транспонированных данных.frame ... – agenis