我试图了解使用波浪号运算符和相关函数.我的第一个问题是为什么I()需要用来指定算术运算符?例如,这2个图产生不同的结果(前者有一条直线,后者有预期的曲线)
x <- c(1:100)
y <- seq(0.1,10,0.1)
plot(y~x^3)
plot(y~I(x^3))
Run Code Online (Sandbox Code Playgroud)
此外,以下两个图也产生预期结果
plot(x^3, y)
plot(I(x^3), y)
Run Code Online (Sandbox Code Playgroud)
我的第二个问题是,也许我一直在使用的例子太简单了,但我不明白~实际应该在哪里使用.
我最近一直在使用 tidymodels 来运行模型并选择最能满足某些目标函数的参数。例如,对 mtcars 数据使用假设回归(使用此问题底部答案中的回归示例作为示例)
library(tidymodels)
library(tidyverse)
#some regression model
cars_recipe <- recipe(mpg ~ disp + drat, data = mtcars)
wf <- workflow() %>%
add_recipe(cars_recipe)
Run Code Online (Sandbox Code Playgroud)
(粗略地使用此博客文章中的语法进行比较;在此示例中,为了清晰起见,我没有执行诸如拆分测试/训练之类的各种步骤)
然后,我可以运行许多模型并从这些模型中获取指标(在这种情况下,针对某些弹性网络的各种惩罚)
#run over a parameter space and find metrics as an objective
mtcars_bootstrap <- bootstraps(mtcars)
tune_spec <- linear_reg(penalty = tune(), mixture = 1) %>%
set_engine("glmnet")
lambda_grid <- grid_regular(penalty(), levels = 50)
lasso_grid <- tune_grid(
wf %>% add_model(tune_spec),
resamples = mtcars_bootstrap,
grid = lambda_grid
)
Run Code Online (Sandbox Code Playgroud)
但是可以说我有充分的理由认为有两个单独的模型可以最好地捕捉对汽车的(例如)mpg 的影响,所以我创建了第二个模型作为配方
cars_recipe2 <- recipe(mpg ~ …Run Code Online (Sandbox Code Playgroud) 我正在为我的作业创建一个线性模型:
lm(revenue ~ (max_cpc - max_cpc.mean), data = traffic)
Run Code Online (Sandbox Code Playgroud)
但它抛出:
Error in model.frame.default(formula = revenue ~ (max_cpc - max_cpc.mean), :
variable lengths differ (found for 'maxcpc.mean')
Run Code Online (Sandbox Code Playgroud)
然后,通过反复试验,我稍微修改了我的代码:
lm(revenue ~ I(max_cpc - max_cpc.mean), data = traffic)
Run Code Online (Sandbox Code Playgroud)
和宾果!!!它运作良好.
但现在我想弄清楚'我'的重要性以及它如何解决我的问题.有谁可以向我解释一下?