我有计算机科学背景,我正在尝试通过解决互联网上的问题来自学数据科学
我有一个较小的数据集,其中有 3 个变量 - 种族、性别和年收入。大约有 10,000 个样本观测值。我正在尝试预测种族和性别的收入。
我已将数据分为两部分 - 每种性别各一份,现在我正在尝试创建 2 个回归模型。这在 R 中可能吗?有人可以提供示例语法吗?
我正在尝试从 python 中的线性回归(OLS)中获取 beta 和误差项。我被困在声明中X=sm.add_constant(X, prepend=True),该声明返回一个
错误:“AttributeError:‘模块’对象没有属性‘add_constant’”
我已经安装了statsmodels模块。
我正在对与房屋有关的数据进行线性回归分析。目前我有 23 个功能。其中一些显然是有序的(例如年份、房间数、楼层)。有些功能是分类的,我对在编码为数字格式时如何处理它们感到困惑。我对使用哪种编码方法犹豫不决:one-hot 编码(用于分类)或只是序数映射(用于序数数据)。我知道诸如颜色、性别、地区、国籍等分类特征显然必须使用虚拟编码进行编码。而且很明显,诸如可能值为“旧”、“翻新”、“新”的条件这样的分类特征可以分别排序和编码为1、2、3。
但我不确定如何编码不太明显的特征。该特征的性质不会立即引人注目,并且在某种程度上可以同时归因于序数数据和分类数据。让我们看一下例子:
Strongly Agree
Agree
Undecided
Disagree
Strongly Disagree
Run Code Online (Sandbox Code Playgroud)
作者决定按顺序对它们进行编码。有些人建议使用虚拟编码。不清楚。
另一个例子(材料):
Plastic
Wood
Metal
Armored
Run Code Online (Sandbox Code Playgroud)
从我的角度来看,这些数据可以按顺序排序和编码为 1,2,3,4。简单装甲比金属更贵。金属比木材等贵。但我在 youtube 上看到了一个讲座,据说不要仅仅因为看到一些升序或降序模式就对特征进行常规编码。这些模式可能是幻觉和错误的。
另一个例子(互联网连接类型):
DSL
ADSL
SDSL
Cable
Broadband
Run Code Online (Sandbox Code Playgroud)
其中一些比其他更快,一些比其他慢,但没有“明确的顺序”。如何处理此类“不清楚”的分类数据。
如何区分分类数据和序数数据?或者我只需要按序编码非常简单的序数变量,例如“条件”,并将其余不清楚的变量保留为分类和虚拟编码。
encoding regression machine-learning linear-regression categorical-data
我的模型是
lm(formula = medv ~ crim + indus + rm + dis + crim * indus)
我必须将rm*rm2 阶多项式项添加到上述模型中。我们如何在 R 中做到这一点?
对于具有2个变量的线性模型
r = lm(y ~ x1+x2)
Run Code Online (Sandbox Code Playgroud)
当我跑步的时候 plot(r),我得到了一堆图,比如残差和拟合值等,但我一次只看其中一个.
有没有办法将它们分开?
我在互联网上找到了以下代码
mod1 <- lm(mpg ~ weight + I(weight^2) + foreign, auto)
功能是什么I()?似乎结果weight^2是一样的I(weight^2).
以下是逗号分隔形式的数据集示例(顶行中包含变量名称)...
LABEL,X,Y
bimmy,1,2
bimmy,2,4
bimmy,3,6
jimmy,2,8
jimmy,5,4
jimmy,6,10
marian,3,10
marian,4,9
marian,5,5
Run Code Online (Sandbox Code Playgroud)
我想对每个LABEL进行X和Y的线性回归分析.所以,我会对'bimmy'分析X和Y,然后分析'jimmy',然后分析'marian'.
这在SPSS中是否可行?R更容易吗?
我用类似措辞查询了Google和Stack Overflow,但没有发现任何相关内容.
p=(-50:50)^2
y=c(p, 2500+10*(1:99), p+1000)
plot(seq_along(y), y+100*rnorm(length(y)))
Run Code Online (Sandbox Code Playgroud)
假设我有一个像上面这样的数据集,其中只有数据的一个子集是线性的。像lm()R 中的简单线性回归不能智能地找出适合线性拟合的区域(在本例中为 100 到 200)。
如何找出数据的哪一部分是线性的并仅在这个数据集子集中执行拟合?欢迎使用 R 和 python 中的解决方案。
请注意,上面显示的日期只是一个示例,只要它包含线性部分,该方法就应该对任意数据集具有鲁棒性。当有多个线性部分时,还应显示那些多个线性部分。如果没有线性部分,它应该显示没有找到线性部分。
编辑:一般来说,统计方法可能不适合稳健地解决这个问题。我添加了计算机视觉和机器学习标签。也许这些领域中的方法通常更适合稳健地解决这个问题?
machine-learning curve-fitting computer-vision linear-regression