跳转至

Lm()

在R语言中,lm()函数是用于拟合线性回归模型的内置函数

函数定义

lm(formula, data, subset, weights, na.action,
   method = "qr", model = TRUE, x = FALSE, y = FALSE, qr = TRUE, singular.ok = TRUE,
   contrasts = NULL, offset, ...)

参数: - formula:一个公式,指定了回归模型的形式。通常包含自变量和因变量的关系。形式是y ~ x,可以直接用data中的列标题,如

一元回归:column1~column2

多元回归:column1~column2+column3+...
  • data:一个数据框,包含用于构建模型的所有变量

  • subset:一个逻辑向量或表达式,用于指定用于拟合模型的子集观测。

  • weights:一个数值向量,用于为每个观测指定权重

  • na.action:一个函数,用于处理缺失值

  • method:一个字符,表示用于拟合模型的方法。默认为"qr",表示使用QR分解方法。

  • model:一个逻辑值,表示是否返回拟合的模型对象。默认为TRUE

  • xyqrsingular.ok:这些参数在内部使用,通常不需要手动指定。

  • contrasts:一个列表,用于指定变量的对比方式。

  • offset:一个数值向量,用于指定线性预测器的偏移量。

  • ...:其他传递给拟合函数的参数。

# 创建示例数据
x <- c(1, 2, 3, 4, 5)
y <- c(2, 4, 6, 8, 10)

# 拟合线性回归模型
model <- lm(y ~ x)

# 打印模型摘要
summary(model)

输出:

Call:
lm(formula = y ~ x)

Residuals:
     1      2      3      4      5 
-5e-16  0e+00  0e+00  0e+00  0e+00 

Coefficients:
Estimate Std. Error   t value Pr(>|t|)    
(Intercept)  1.332e-15  1.014e-15  1.314e+00    0.268    
x            2.000e+00  1.157e-16  1.729e+16   <2e-16 ***
---
Signif. codes:  0 *** 0.001 ** 0.01 * 0.05 . 0.1   1

Residual standard error: 8.659e-16 on 3 degrees of freedom
Multiple R-squared:      1, Adjusted R-squared:      1 
F-statistic: 2.988e+32 on 1 and 3 DF,  p-value: < 2.2e-16

在上面的示例中,我们首先创建了自变量向量x和因变量向量y作为示例数据。然后,我们使用lm()函数拟合了一个线性回归模型,其中因变量y与自变量x之间的关系由公式y ~ x指定。将拟合的模型存储在model变量中。 最后,我们使用summary()函数打印了模型的摘要。摘要包含了拟合系数估计、标准误差、t值、p值以及其他统计指标。 通过使用lm()函数,您可以根据数据和指定的公式拟合线性回归模型,并对拟合的模型进行统计分析。

y ~ x或column1~column2

使用lm()函数进行线性回归时,可以使用公式语法指定自变量和因变量y~x。 在公式中,y ~ x表示因变量y与自变量x之间的关系。 当提供data参数时,R会自动在data中查找与公式中的变量名匹配的列向量。 数据集的变量名就需要为x、y 如果在data中找不到与公式中变量名相匹配的列,R会发出错误提示

更复杂的公式: 1. 多项式回归:如果你想拟合一个多项式回归模型,你可以使用 ^ 符号指定多项式的次数。例如,lm(y ~ x^2) 会拟合一个二次多项式模型。 2. 交互项和交互项:使用 : 符号来添加交互项。例如,lm(y ~ x1:x2) 会创建一个 x1 和 x2 的交互项。 3. 交互项和交互项的交互项:使用 # 符号来创建更高阶的交互项。例如,lm(y ~ x1#x2) 会创建一个 x1 和 x2 的二阶交互项。 4. 虚拟变量(也称为哑变量):如果你想在模型中包含分类变量,并想将它们转化为虚拟变量,你可以使用 as.factor() 函数或者在公式中使用 - 符号。例如,lm(y ~ factor(x) + z) 或 lm(y ~ x - z)。 5. 非线性模型:虽然 lm() 函数主要用于线性模型,但你可以通过添加非线性函数来创建非线性模型。例如,lm(y ~ poly(x, 2, raw=TRUE)) 会创建一个包含 x 的二次多项式的非线性模型。 6. 基于函数的预测变量:你也可以使用自定义函数来转换预测变量。例如,lm(y ~ log(x)) 会创建一个以 x 的对数为预测变量的模型。 7. 混合效应模型:如果你想拟合一个混合效应模型(也称为随机效应模型),你可以使用 lme() 或 lmer() 函数,这两个函数比 lm() 提供了更多的灵活性。 8. 广义线性模型(GLM):这是更一般的线性模型形式,允许因变量的分布除了正态分布外还有其他的分布形式,例如二项分布、泊松分布等。可以使用 glm() 函数来拟合这些模型。