如何将矩阵的一行变成一个向量,以便我可以对其进行线性回归?

How to turn just one row of a matrix into a vector so I can do a linear regression on it?

我正在尝试用 R 做我的第一个项目,但我不懂这门语言,所以这真的让我难受。这是我遇到过的最令人沮丧的事情,主要是因为互联网上似乎绝对没有任何地方可以迎合不懂该语言的人教你如何做事。

我正在尝试 运行 对我正在使用的数据进行线性回归,该数据是 RStudio 拥有的内置数据集之一。这是我的代码行:

    lm(Income ~ Illiteracy, data=florida)

但我一直在想这个错误:

Error in model.frame.default(formula = Income ~ Illiteracy, data = florida,: 'data' must be a data.frame, not a matrix or an array

(帮我的朋友把state.x77改名为"florida")。

在收到此错误并决定我更愿意在回归中单独执行每个状态或至少对几个样本状态进行处理后,我决定采用佛罗里达行并将其转换为自己的向量来执行上的分析。但是,我不知道该怎么做。我一直在这个网站上看到建议,但他们都在考虑 "naming" 的事情,而且很多命令都有 "dim",但没有人解释。

请帮助我是一个完全的初学者,我有一本假设你知道 R 的教科书,我找到了另一本 "Learn R" 不知怎么也假设你知道 R 的书

R 有几种用于处理数据集的数据结构。 matrix 就是其中之一 - 它限制您使用单一类型的变量(通常是 numeric),并且必须是矩形。

A data.frame 在形状上类似于矩阵,但每一列可以是不同的类型(例如 numericcharacterfactor)。这更接近于典型的数据集,其中混合了连续/数字、有序和分类/名义变量。

您可以通过输入 ?functionname 来检查一个函数需要什么样的输入,例如?lm 并检查参数部分:

data
an optional data frame, list or environment (or object coercible by as.data.frame to a data frame) containing the variables in the model. If not found in data, the variables are taken from environment(formula), typically the environment from which lm is called.

在尝试回归之前,您可以通过良好的入门课程学习 R 的基本构建块。一个免费选项是 DataCamp's Introduction to R,但还有许多其他选项。一旦了解了 R 的不同变量类型、数据结构和语法,这些错误就很容易纠正了。

在这种情况下,您只需将 as.data.frame(florida) 写入 "coerce" 将 matrix 对象写入 data.frame 对象。

如果您想获得每个州的模型,试试这个

data(state)

state.x77 <- as.data.frame(state.x77)
state.x77$name <- rownames(state.x77)
mod_list <- list()
for (s in unique(rownames(state.x77))) {
    m <- lm(Income ~ Illiteracy, data = subset(state.x77, name == s))
    mod_list <- c(mod_list, list(mod = m))
}
names(mod_list) <- unique(rownames(state.x77))

对于文盲与收入的线性回归,您应该这样做:

lm(Income ~ Illiteracy, data=as.data.frame(state.x77))

因为lm接受数据帧,而不是矩阵。

friend who was helping me renamed state.x77 into "florida"

我不知道他或她为什么要这么做。 state.x77是50个不同状态的8个参数的数据。佛罗里达只是其中之一,他到底为什么要称它为 "florida"?假设您有 200 个不同国家的人口和收入数据集。你会称它为 "india" 因为印度是数据集中的国家之一吗?

After getting this error and deciding that I would prefer to either do each state individually in the regression

你不能"do a state individually in the regression"。并不是说你不能在 R 中做,你根本做不到,因为它在数学上是荒谬的。佛罗里达州(在此矩阵中)人口为 4815,文盲率为 1.3。你如何在两个数字之间进行回归?太荒谬了。

I decided I wanted to take the Florida row and turn it into its own vector to do the analysis on.

您可以选择佛罗里达行:

foo <- state.x77["Florida",]

现在 foo 是佛罗里达州的 8 个参数的向量,但是您可以用它做什么?