簡體   English   中英

R:線性回歸模型中的誤差

[英]R : Error in linear regression model

我有2個不同的數據框,我想對其進行線性回歸

我已經為它編寫了以下代碼

mydir<- "/media/dev/Daten/Task1/subject1/t1"
#multiple subject paths should be given here
# read full paths
myfiles<- list.files(mydir,pattern = "regional_vol*",full.names=T)
# initialise the dataframe from first file 

df<- read.table( myfiles[1], header = F,row.names = NULL, skip = 3, nrows = 1,sep = "\t") 
# [-c(1:3),]
df
#read all the other files and update dataframe
#we read 4 lines to read the header correctly, then remove 3 
ans<- lapply(myfiles[-1], function(x){  read.table( x, header = F, skip = 3, nrows = 1,sep = "\t")       })
ans
#update dataframe
#[-c(1:3),]
lapply(ans, function(x){df<<-rbind(df,x)}  )
#this should be the required dataframe

uncorrect<- array(df)

# Linear regression of ICV extracted from global size FSL 
# Location where your icv is located
ICVdir <- "/media/dev/Daten/Task1/T1_Images"
#loding csv file from ICV
mycsv  <- list.files(ICVdir,pattern = "*.csv",full.names = T )
af<- read.csv(file = mycsv,header = TRUE)
ICV<- as.data.frame(af[,2],drop=FALSE)
#af[1,]
#we take into consideration second column  of csv
#finalcsv <-lapply(mycsv[-1],fudnction(x){read.csv(file="global_size_FSL")})
subj1<- as.data.frame(rep(0.824,each=304))

plot(df ~ subj1, data = df,
       xlab = "ICV value of each subject",
       ylab = "Original uncorrected volume",
       main="intercept calculation"
       )

fit <- lm(subj1 ~ df )

數據幀df具有以下格式的304個值

6433 6433     
1430 1430     
1941 1941     
3059 3059     
3932 3932     
6851 6851

另一個數據幀Subj1具有以下格式的304個值

0.824     
0.824     
0.824      
0.824     
0.824

當我運行代碼時,出現以下錯誤

Error in model.frame.default(formula = subj1 ~ df, drop.unused.levels = TRUE) : 
  invalid type (list) for variable 'subj1'

任何有關變量subj1的data.frame值為何無效的建議

如前所述,您試圖將data.frame作為自變量。 嘗試:

 fit <- lm(subj1 ~ ., data=df )

只要subj1是因變量的名稱,而不是數據幀本身,它將使用數據幀中的所有變量。

如果df有兩列是預測變量,而subj1是預測的(因變量),則將兩者合並,為其指定適當的列名稱,並按上述格式創建模型。

就像是:

data <- cbind(df, subj1)
names(data) <- c("var1", "var2", "subj1")
fit <- lm(subj1 ~ var1 + var2, data=df )

編輯:一些指針:

  1. 確保使用包含所有自變量和因變量的單個數據框。
  2. 行數應相等。
  3. 如果自變量為常量,則因變量的不同值沒有方差,因此也就沒有意義。 如果因變量是常數,則沒有回歸的意義-我們可以以100%的精度預測值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM