Как перекодировать недостающие данные, чтобы мои переменные длины были одинаковыми в R

Таким образом, у меня есть две переменные, которые являются значениями SAT в Verbal(SATV) и Quantitative(SATQ). Есть 500 строк. В SATQ есть 7 NA's. Моя цель - запустить lm() и gvlma() с SATV и SATQ как IVs. Но я получаю ошибки, говорящие, что R не будет запускать мой код, потому что я опустил NAs из SATQ и теперь мои переменные различной длины. Как переделать NA's так, чтобы моя переменная оставалась той же длины. Игнорировать ненормальные данные и нарушение допущений. (Также я понятия не имею, что я делаю в R, поэтому, если вы можете предложить совет, притворитесь, что разговариваете с кем-то, у кого нет понимания R)

> summary(SATQ)
 Min. 1st Qu. Median Mean 3rd Qu. Max. NA 
 200.0 525.0 610.0 604.5 700.0 800.0 7 

> SATQ2<-na.omit(SATQ)

> summary(SATQ2)
 Min. 1st Qu. Median Mean 3rd Qu. Max. 
 200.0 525.0 610.0 604.5 700.0 800.0 

> summary(SATV)
 Min. 1st Qu. Median Mean 3rd Qu. Max. 
 200.0 537.5 600.0 604.4 690.0 800.0

> summary(ms)
 Min. 1st Qu. Median Mean 3rd Qu. Max. 
 765.6 1844.0 2133.0 2093.0 2395.0 2877.0 

> #ms= monthly salary
> m1 = lm(ms~SATV+SATQ2)
Error in model.frame.default(formula = ms ~ SATV + SATQ2, drop.unused.levels = TRUE) : 
 variable lengths differ (found for 'SATQ2')

> m1 = lm(ms~SATV+SATQ2)
Error in model.frame.default(formula = ms ~ SATV + SATQ2, drop.unused.levels = TRUE) : 
 variable lengths differ (found for 'SATQ2')

> summary(m1)

Call:
lm(formula = ms ~ SATV + SATQ2)

Residuals:
 Min 1Q Median 3Q Max 
-1551.58 -12.48 45.32 99.77 168.46 

Coefficients:
 Estimate Std. Error t value Pr(>|t|) 
(Intercept) 57.5656 55.1658 1.044 0.297 
SATV 1.4313 0.1030 13.890 <2e-16 ***
SATQ2 1.9350 0.1025 18.871 <2e-16 ***
---
Signif. codes: 0 ‘*** 0.001 ‘** 0.01 ‘* 0.05 ‘. 0.1 ‘ 1

Residual standard error: 206.3 on 490 degrees of freedom
 (7 observations deleted due to missingness)
Multiple R-squared: 0.7419, Adjusted R-squared: 0.7409 
F-statistic: 704.3 on 2 and 490 DF, p-value: < 2.2e-16

> gvlma(m1)

Call:
lm(formula = ms ~ SATV + SATQ2)

Coefficients:
(Intercept) SATV SATQ2 
 57.566 1.431 1.935 


ASSESSMENT OF THE LINEAR MODEL ASSUMPTIONS
USING THE GLOBAL TEST ON 4 DEGREES-OF-FREEDOM:
Level of Significance = 0.05 

Call:
 gvlma(x = m1) 

 Value p-value Decision
Global Stat 7.904e+03 0.00e+00 Assumptions NOT satisfied!
Skewness 1.261e+03 0.00e+00 Assumptions NOT satisfied!
Kurtosis 6.593e+03 0.00e+00 Assumptions NOT satisfied!
Link Function 2.317e-02 8.79e-01 Assumptions acceptable.
Heteroscedasticity 5.036e+01 1.28e-12 Assumptions NOT satisfied!
1 ответ

Вероятно, самый простой вариант - сделать следующее:

dta = data.frame(SATV=SATV, SATQ=SATQ, ms = ms)
lm(ms ~ SATV + SATQ, data = na.omit(dta))

Который удалит NAs по ряду.

licensed under cc by-sa 3.0 with attribution.