【问题标题】:Numerous errors in RR中的许多错误
【发布时间】:2015-11-16 02:37:09
【问题描述】:

我在整个过程中出现了许多错误。我仍在获得价值,但我不确定它们的准确性。在修复这些错误时,我尝试从顶部开始并使用我拥有的变量定义,但结果是空的。

contdepdata <- read.delim("/Users/Jkels/Documents/Introduction to 
Computational Statistics/winequality-
red.csv",sep=",",header=TRUE,stringsAsFactors=FALSE)
contdepdata <- na.omit(contdepdata)
numericvars <- c(1:11)
dim(contdepdata)
head(contdepdata)

insample <- contdepdata[1:500,]
outsample <- contdepdata[501:1000,]
insamplex <- insample[x,]
outsamplex <- outsample[x,]
insampley <- insample[y,]
outsampley <- outsample[y,]

x <- insample[,numericvars]
y <- insample$quality

lambdalevels <- 10^seq(7,-2,length=100)

lmout <- lm(insampley~insamplex, data=insample)

model.frame.default 中的错误(公式 = insampley ~ insamplex,data = insample,:变量“insampley”的类型(列表)无效

yhatr <- cbind(1,outsamplex) %*% lmout$coefficients

cbind(1, outsamplex) %*% lmout$coefficients 中的错误:需要数字/复矩阵/向量参数

【问题讨论】:

  • 每个错误你应该问一个问题。这个网站的想法不仅是为了解决你的问题,也是为了让答案对其他人有用。确保您还首先在此处和搜索引擎中搜索错误,并查看 R 文档以了解您使用的功能。拆分成单独的问题也使您更有可能获得答案。
  • 这是一个乱七八糟的问题。 attributes(contdepdata) 有什么用?在网上看,这个数据集似乎有名为fixed.acidity, volatile.acidity, citric.acid, residual.sugar, chlorides, free.sulfur.dioxide, total.sulfur.dioxide, density, pH, sulphates, alcoholquality 的列。 xy 是从哪里来的?如果你真的想从 SO 社区获得帮助,你真的应该考虑将你的问题链接到数据集。
  • 在调查每一个警告之前,您不应该相信结果,更不用说是否存在错误。发生第一个错误是因为 insampley 是一个 data.frame (尽管稍后我不知道定义 xy 时会发生这种情况)。假设您的数据中有一个x 列,我认为您打算使用insamplex &lt;- insample[, "x"](等等)。

标签: r regression


【解决方案1】:

我认为这与您想要的很接近。 lm 使用的公式/数据帧策略和 glmnet 使用的矩阵策略之间存在巨大差异,我认为这是让你绊倒的部分原因。坦率地说,我发现 glmnet 对矩阵的使用令人失望(认为可能有必要,我以前从未使用过)。

library(dplyr)
library(magrittr)
library(glmnet)

data = 
  data_frame(a = rnorm(10),
             b = rnorm(10),
             c = "delete",
             quality = rnorm(10)) %>%
  extract(c(1:2, which(names(.) == "quality")))

data.training = 
  data %>%
  slice(1:5)

data.test = 
  data %>%
  slice(6:10)

quality.predict = 
  ( quality ~ . ) %>%
  lm(data.training) %>%
  predict(data.test) %>%
  unname

MSE.standard = 
  data.test %>%
  summarize(MSE = sum( (quality - quality.predict) ^ 2 / n() ) ) %>%
  use_series(MSE)

lambda = 10^seq(7, -2, length = 10)

regression.lasso = cv.glmnet(data.training %>% 
                               select(., -quality) %>% 
                               as.matrix,
                             data.training$quality,
                             alpha = 1,
                             lambda = lambda )

quality.lasso = 
  predict(regression.lasso$glmnet.fit,
          regression.lasso$lambda.min,
          newx = data.test %>%
            select(-quality) %>%
            as.matrix
          )[,1]

MSE.lasso = 
  data.training %>% 
  summarize(MSE = sum( (quality - quality.lasso) ^ 2 / n() ) ) %>%
  use_series(MSE)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-25
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 2013-05-08
    • 2017-10-12
    相关资源
    最近更新 更多