我在一个关于回归建模的教程中看到了以下命令:
myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
Run Code Online (Sandbox Code Playgroud)
这个命令究竟做了什么,~(tilde)在命令中的作用是什么?
我有
library(ISLR)
attach(Wage)
# Polynomial Regression and Step Functions
fit=lm(wage~poly(age,4),data=Wage)
coef(summary(fit))
fit2=lm(wage~poly(age,4,raw=T),data=Wage)
coef(summary(fit2))
plot(age, wage)
lines(20:350, predict(fit, newdata = data.frame(age=20:350)), lwd=3, col="darkred")
lines(20:350, predict(fit2, newdata = data.frame(age=20:350)), lwd=3, col="darkred")
Run Code Online (Sandbox Code Playgroud)
预测线似乎是相同的,但为什么系数如此不同?你如何解读为此他们raw=T和raw=F.
我看到产生的系数与poly(...,raw=T)那些系数相匹配~age+I(age^2)+I(age^3)+I(age^4).
如果我想使用系数来"手动"(不使用predict()函数)获得预测,那么我应该注意什么?我该如何解释正交多项式的系数poly().
我无法找到这个问题的答案,主要是因为使用独立字母(如"我")搜索任何内容都会导致问题.
"I"在这样的模型中做了什么?
data(rock)
lm(area~I(peri - mean(peri)), data = rock)
Run Code Online (Sandbox Code Playgroud)
考虑到以下情况不起作用:
lm(area ~ (peri - mean(peri)), data = rock)
Run Code Online (Sandbox Code Playgroud)
而这没有问题:
rock$peri - mean(rock$peri)
Run Code Online (Sandbox Code Playgroud)
关于如何自己研究这个问题的任何关键词也会非常有帮助.
我正在尝试创建此解决方案的更简约版本,这需要在表单中指定公式的RHS d1 + d1:d2.
鉴于*在公式的上下文是一个精辟的替身充分互动(即d1 * d2给出了d1 + d2 + d1:d2),我的方法是尝试和定义代替负责人,说%+:%使用中缀方法,我已经习惯于在其他应用中,一拉:
"%+:%" <- function(d1,d2) d1 + d2 + d1:d2
Run Code Online (Sandbox Code Playgroud)
然而,这可以预见失败,因为我没有注意评估; 让我们举一个例子来说明我的进展:
set.seed(1029)
v1 <- runif(1000)
v2 <- runif(1000)
y <- .8*(v1 < .3) + .2 * (v2 > .25 & v2 < .8) -
.4 * (v2 > .8) + .1 * (v1 > .3 & v2 > .8)
Run Code Online (Sandbox Code Playgroud)
通过这个例子,希望很清楚为什么简单地写出这两个术语可能是不可取的:
y ~ cut(v2, breaks = c(0, .25, …Run Code Online (Sandbox Code Playgroud)