R> data("FoodExpenditure", package = "betareg")
R> fe_lm <- lm(I(food/income) ~ income + persons, data = FoodExpenditure)据我所知,I(food/income)创建了一个新变量,即食物与收入的比率,这是正确的吗?有没有其他可能的组合(函数)?
发布于 2019-09-11 05:00:34
注意到这两个结果是相同的。
# transformation in formula
lm(I(food/income) ~ income + persons, data = FoodExpenditure)
# Call:
# lm(formula = I(food/income) ~ income + persons, data = FoodExpenditure)
#
# Coefficients:
# (Intercept) income persons
# 0.341740 -0.002469 0.025767
# transformation in data
dd <- transform(FoodExpenditure, ratio=food/income)
lm(ratio ~ income + persons, data = dd)
# Call:
# lm(formula = ratio ~ income + persons, data = dd)
#
# Coefficients:
# (Intercept) income persons
# 0.341740 -0.002469 0.025767 使用lm()的公式中的I()函数允许您执行任何您喜欢的变量函数。(只需确保函数不会更改行数,否则您将无法正确地拟合模型。)
发布于 2019-09-11 05:47:51
是和是。
公式?formula的文档中给出了其他可能的组合和运算符。下面的内容主要取自它。
表示术语之间的交互
*运算符表示因子交叉:‘a*b’解释为‘a+b+a:b’。
^运算符表示交叉到指定的程度。例如,‘(a+b+c)^2’与‘(a+b+c)*(a+b+c)’相同,后者又扩展为包含‘a’、‘b’和‘c’的主效应以及它们的二级相互作用的公式。%运算符中的%指示其左侧的术语嵌套在右侧的术语中。例如,‘a+b%in%a’扩展为公式‘a+a:b’。-运算符删除指定的项,以便‘(a+b+c)^2-a:b’与‘a+b+c+ b:c +a:c’相同。它还可以用来删除截距项:当拟合线性模型时,‘y~x-1’指定一条通过原点的直线。没有截距的模型也可以指定为‘y~x+0’或‘y~0+x’。
算术表达式-虽然公式通常只涉及变量和因子名称,但它们也可以涉及算术表达式。公式‘log(Y)~a+log(X)’是非常合法的。I()为了避免这种混淆,可以使用函数‘i()’将运算符在算术意义上使用的模型公式的那些部分括起来。例如,在公式‘y~a+i(b+c)’中,术语‘b+c’应解释为‘b’和‘c’之和。
https://stackoverflow.com/questions/57878073
复制相似问题