sunduanchen / Scissor

Scissor package
GNU General Public License v3.0
168 stars 29 forks source link

The length differs between tags and phenotypes. Please check Scissor inputs and selected regression type. #52

Closed Jinjin89 closed 11 months ago

Jinjin89 commented 1 year ago

I was tring using Scissor with gaussian family, my input phenotype is a numeric vector(length is 176), As I am concerned, the tag may be should be a name (whose length should be 1). And it gives the length error as the title suggests.

I turned to the source code found that

    if (family == "gaussian") {
      Y <- as.numeric(phenotype)
      z <- table(Y)
      if (length(z) != length(tag)) {
        stop("The length differs between tags and phenotypes. Please check Scissor inputs and selected regression type.")
      }
      else {
        tmp <- paste(z, tag)
        print(paste0("Current phenotype contains ", 
          paste(tmp[1:(length(z) - 1)], collapse = ", "), 
          ", and ", tmp[length(z)], " samples."))
        print("Perform linear regression on the given phenotypes:")
      }
    }

I am confused by the applying the table function for phenotype. It does make sense in logistic regression. However, I am not sure why use it in gaussian kernel.

Really appreciate any explaination

sunduanchen commented 1 year ago

Hi. You are right. Thanks for your suggestion. You can use any vector as tag (length 176) for now and I will update the part soon.

Best, Duanchen

On Mon, 8 May 2023 at 16:02, Jinjin89 @.***> wrote:

I was tring using Scissor with gaussian family, my input phenotype is a numeric vector(length is 176), As I am concerned, the tag may be should be a name (whose length should be 1). And it gives the length error as the title suggests.

I turned to the source code found that

if (family == "gaussian") {
  Y <- as.numeric(phenotype)
  z <- table(Y)
  if (length(z) != length(tag)) {
    stop("The length differs between tags and phenotypes. Please check Scissor inputs and selected regression type.")
  }
  else {
    tmp <- paste(z, tag)
    print(paste0("Current phenotype contains ",
      paste(tmp[1:(length(z) - 1)], collapse = ", "),
      ", and ", tmp[length(z)], " samples."))
    print("Perform linear regression on the given phenotypes:")
  }
}

I am confused by the applying the table function for phenotype. It does make sense in logistic regression. However, I am not sure why use it in gaussian kernel.

Really appreciate any explaination

— Reply to this email directly, view it on GitHub https://github.com/sunduanchen/Scissor/issues/52, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEYQWDEDI5O5Q4GAPJPWC53XFCSBNANCNFSM6AAAAAAXZS34N4 . You are receiving this because you are subscribed to this thread.Message ID: @.***>