ข้อผิดพลาดใน lm.fit(x,y,offset = offset, singular.ok,) 0 กรณีที่ไม่ใช่ NA พร้อมสูตร boxcox

ฉันกำลังพยายามเรียกใช้การแปลง boxcox ด้วยรหัสต่อไปนี้:

urban1 <- subset(ski,urban <= 4,na.rm=TRUE)
ski$gender <- as.numeric((as.character(ski$gender)),na.rm=TRUE)
urban1 <- as.numeric((as.character(urban1)))
x <- (ski$gender*urban1)
y <- ski$EPSI.
bc <- boxcox(y ~ x) 
(trans <- bc$x[which.max(bc$y)]) 
model3 <- lm(y ~ x) 
model3new <- lm(y^trans ~ x)
ski$EPSI. <- ski$EPSI. + 1

แต่ฉันได้รับข้อผิดพลาดนี้ต่อไป:

ข้อผิดพลาดใน lm.fit(x,y,offset = offset, singular.ok = singular.ok, ...) : 0 (ไม่ใช่ NA) กรณีการโทร: ... eval -> eval -> boxcar -> boxcar สูตร -> lm -> lm.fit การดำเนินการหยุดลง

ขอบคุณล่วงหน้า!


person Vickie Ip    schedule 28.04.2017    source แหล่งที่มา
comment
คุณแน่ใจเกี่ยวกับแถวที่ 2 หรือไม่? หากโค้ดของคุณมีค่าหายไป คุณจะแทนที่ข้อมูลด้วยค่าที่ไม่ถูกต้อง ฉันขอแนะนำให้คุณแปลงโค้ดของคุณในจักรวาล tidyverse และโดยเฉพาะ dplyr   -  person YCR    schedule 28.04.2017


คำตอบ (2)


ข้อความแสดงข้อผิดพลาด

lm.fit(x,y,offset = offset, singular.ok = singular.ok, ...) : 0 (ไม่ใช่ NA) กรณี

ถูกสร้างขึ้นโดยคำสั่ง lm(y ~ x) เมื่อตัวแปร x หรือ y (หรือทั้งสองอย่าง) มีเพียง NA เท่านั้น
นี่คือตัวอย่าง:

n <- 10
x <- rnorm(n,1)
y <- rep(NA,n)
lm(y ~ x)

Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
  0 (non-NA) cases

ในโค้ดของคุณ ฉันขอแนะนำให้ทดสอบ (ก่อนคำสั่ง lm ของคุณ) ว่าหนึ่งในตัวแปรของคุณมี NA ทั้งหมดที่ใช้:

all(is.na(x))
all(is.na(y))
all(is.na(y^trans))

ในตัวอย่างของฉัน:

all(is.na(y))
[1] TRUE
person Marco Sandri    schedule 28.04.2017
comment
ฉันได้รับข้อผิดพลาดนี้หลังจากลบคอลัมน์ทั้งหมดที่เป็น NA อย่างสมบูรณ์ อาจมีเหตุผลเพิ่มเติมในการได้รับข้อผิดพลาดนี้หรือไม่ - person Tom; 04.09.2018
comment
@TomKisters ได้โปรดทอม คุณช่วยแบ่งปันข้อมูลเพิ่มเติมเกี่ยวกับปัญหาของคุณได้ไหม - person Marco Sandri; 09.09.2018

ข้อผิดพลาดอาจถูกกระตุ้นโดย NA ในข้อมูลของคุณ หรือ การเปลี่ยนแปลงที่ไม่ดี

#From the mtcars dataset
mpg.reg3 <- lm(mpg ~ cylinders + displacement + horsepower + weight + acceleration + year + origin, data=Auto, na.action=na.exclude)

สังเกตอาร์กิวเมนต์ na.action= การตั้งค่านี้เป็น na.exclude จะทำให้ฟังก์ชัน lm ละเว้น NA ในข้อมูลของคุณ อีกทางเลือกหนึ่งคือ na.omit ซึ่งมีลักษณะแตกต่างออกไปเล็กน้อย

ปัญหาอื่นอาจเป็นการเปลี่ยนแปลงข้อมูลของคุณที่ไม่ดี ตรวจสอบเงื่อนไขการโต้ตอบและการจัดการของคุณอีกครั้ง

person ToastyDre    schedule 26.10.2018