Proč by LM Predikce funkce v oblasti výzkumu přidat řádek do svého výstupu

hlasů
0

Snažím se používat předpovídat funkci v oblasti výzkumu vycházející ze základního lineárního modelu. Můj test soubor má 1459 hodnot, ale když jsem použít předpovídat funkci je vytvoření 1460. Snažil jsem se vyjmutím NAS ze zkušební sady, a dokonce se snažil udržet je dovnitř, ale nevím, kde je tato hodnota pochází.

Pomoci by bylo velmi ocenil. Dík!

MODEL <- lm(train$SalePrice ~ train$LotArea * train$GarageArea * 
factor(train$FullBath) * train$YearBuilt * factor(train$OverallQual))



test_final <-read.csv(/Users/ERIC/Documents/HOUSING_PRICES/test.csv, 
        header = TRUE)


    na.omit(test_final)


    prediction <- data.frame(predict(MODEL, test_final))


    Warning messages:
    1: 'newdata' had 1459 rows but variables found have 1460 rows 
    2: In predict.lm(MODEL, test_final) :
    prediction from a rank-deficient fit may be misleading

Data přes: https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data

Položena 07/11/2018 v 23:54
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
2

Za prvé, poznámka: musíte přiřadit výstup na.omit()zbavit chybějícími hodnotami.

Viz zde:

df <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA))
df
  x  y
1 1  0
2 2 10
3 3 NA
na.omit(df)
  x  y
1 1  0
2 2 10
df
  x  y
1 1  0
2 2 10
3 3 NA

Jak můžete vidět, poslední výzva, aby dfvám ukázal, původní verze včetně NAsekund. Budete muset přiřadit pomocí df <- na.omit(df).


Skutečný problém:

Jak poukázal @ 42 do komentářů, pomocí vzorců správně vyřeší tento problém vyřešit, tedy nebude mít tato chybová zpráva déle. Je ale bude mít jiný. Za prvé, dovolte mi ukázat vám:

#read in the data
testdf <- read.csv("test.csv")
train <- read.csv("train.csv")

# run initial model, and run model as suggested by 42
model_original <- lm(train$SalePrice ~ train$LotArea * train$GarageArea * factor(train$FullBath) * train$YearBuilt * factor(train$OverallQual))

mod_42 <- lm(SalePrice ~ LotArea * GarageArea * factor(FullBath) * YearBuilt * factor(OverallQual), data = train)

Nyní běžme předpovědi:

prediction <- data.frame(predict(model_original, testdf))
Warning messages:
1: 'newdata' had 1459 rows but variables found have 1460 rows 
2: In predict.lm(model_original, testdf) :
  prediction from a rank-deficient fit may be misleading

To vedlo ke stejné chyby jako vy. Nyní běžme předpovědi pomocí druhého přístupu:

prediction <- data.frame(predict(mod_42, testdf))
Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) : 
  factor factor(FullBath) has new levels 4

Všimněte si, že chybová zpráva se liší dnes a ukazuje na další zajímavý problém.

Odpovězeno 08/11/2018 v 00:08
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more