在 R 中获取图的二次方程项
我需要找到我在 R 中绘制的图的二次方程项。 当我在 Excel 中执行此操作时,该术语出现在图表上的文本框中,但我不确定如何将其移动到单元格以供后续使用(以应用于需要校准的值),或者实际上如何在 R 中请求它。如果它在 R 中是可召唤的,它是否可以保存为一个对象以用于将来的计算?
这似乎应该是 R 中的一个简单请求,但我找不到任何类似的问题。非常感谢任何人可以就此提供的任何帮助。
I need to find the quadratic equation term of a graph I have plotted in R.
When I do this in excel, the term appears in a text box on the chart but I'm unsure how to move this to a cell for subsequent use (to apply to values requiring calibrating) or indeed how to ask for it in R. If it is summonable in R, is it saveable as an object to do future calculations with?
This seems like it should be a straightforward request in R, but I can't find any similar questions. Many thanks in advance for any help anyone can provide on this.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
所有的答案都提供了您似乎想做的事情的各个方面,但到目前为止还没有将它们全部整合在一起。让我们考虑 Tom Liptrot 的答案示例:
这为我们提供了一个拟合线性模型,变量
dist
中有一个二次方程。我们使用 coef() 提取器函数提取模型系数:因此您的拟合方程(由于打印而进行舍入):
\hat{speed} = 5.143960960 + (0.327454437 * dist) + (- 0.001528367 * dist^2)
(其中 \hat{speed} 是响应速度的拟合值)。
如果你想将这个拟合方程应用于某些数据,那么我们可以编写自己的函数来完成它:
我们可以像这样应用这个函数:
对于一些新的距离值(
dist
),即但是,在 R 中,我们通常不会做这样的事情,因为,为什么用户必须知道如何从所有不同类型的模型中形成拟合值或预测值?适合R?在 R 中,我们使用标准方法和提取器函数。在这种情况下,如果您想将 Excel 显示的“方程”应用于所有数据以获得此回归的拟合值,在 R 中我们将使用
fitted()
函数:如果您想将模型方程应用于一些未用于拟合模型的新数据值,那么我们需要从模型中获得预测。这是使用
predict()
函数完成的。使用上面插入到myfun
中的距离,这就是我们以更以 R 为中心的方式进行操作的方式:首先,我们使用名为
“dist”的组件创建一个新数据框
,包含我们想要从模型中获得预测的新距离。值得注意的是,我们在此数据框中包含一个与创建拟合模型时使用的变量同名的变量。这一新数据框必须包含用于拟合模型的所有变量,但在本例中我们只有一个变量dist
。另请注意,我们不需要包含有关dist
^2 的任何内容。 R 将为我们处理这个问题。然后我们使用
predict()
函数,为其提供拟合模型,并提供刚刚创建的新数据框作为参数'newdata'
,为我们提供新的预测值,与我们之前手工制作的相匹配。我掩盖的一点是,
predict()
和fitted()
实际上是一整组函数。有针对lm()
模型、针对glm()
模型等的版本。它们被称为通用函数,具有方法< /em>(版本,如果您愿意)适用于几种不同类型的对象。用户通常只需要记住使用fitted()
或predict()
等,而 R 会针对您提供的拟合模型类型使用正确的方法。以下是基本 R 中可用于fitted()
泛型函数的一些方法:根据您加载的其他包,您可能会得到更多的方法。
*
只是意味着您不能直接引用这些函数,您必须使用fitted()
并且 R 会确定要使用哪些函数。请注意,没有针对lm()
对象的方法。这种类型的对象不需要特殊的方法,因此default
方法将被使用并且是合适的。All the answers provide aspects of what you appear at want to do, but non thus far brings it all together. Lets consider Tom Liptrot's answer example:
This gives us a fitted linear model with a quadratic in the variable
dist
. We extract the model coefficients using thecoef()
extractor function:So your fitted equation (subject to rounding because of printing is):
\hat{speed} = 5.143960960 + (0.327454437 * dist) + (-0.001528367 * dist^2)
(where \hat{speed} is the fitted values of the response, speed).
If you want to apply this fitted equation to some data, then we can write our own function to do it:
We can apply this function like this:
for some new values of distance (
dist
), Which is what you appear to want to do from the Q. However, in R we don't do things like this normally, because, why should the user have to know how to form fitted or predicted values from all the different types of model that can be fitted in R?In R, we use standard methods and extractor functions. In this case, if you want to apply the "equation", that Excel displays, to all your data to get the fitted values of this regression, in R we would use the
fitted()
function:If you want to apply your model equation to some new data values not used to fit the model, then we need to get predictions from the model. This is done using the
predict()
function. Using the distances I plugged intomyfun
above, this is how we'd do it in a more R-centric fashion:First up we create a new data frame with a component named
"dist"
, containing the new distances we want to get predictions for from our model. It is important to note that we include in this data frame a variable that has the same name as the variable used when we created our fitted model. This new data frame must contain all the variables used to fit the model, but in this case we only have one variable,dist
. Note also that we don't need to include anything aboutdist
^2. R will handle that for us.Then we use the
predict()
function, giving it our fitted model and providing the new data frame just created as argument'newdata'
, giving us our new predicted values, which match the ones we did by hand earlier.Something I glossed over is that
predict()
andfitted()
are really a whole group of functions. There are versions forlm()
models, forglm()
models etc. They are known as generic functions, with methods (versions if you like) for several different types of object. You the user generally only need to remember to usefitted()
orpredict()
etc whilst R takes care of using the correct method for the type of fitted model you provide it. Here are some of the methods available in base R for thefitted()
generic function:You will possibly get more than this depending on what other packages you have loaded. The
*
just means you can't refer to those functions directly, you have to usefitted()
and R works out which of those to use. Note there isn't a method forlm()
objects. This type of object doesn't need a special method and thus thedefault
method will get used and is suitable.您可以在 lm 的论坛中添加二次项来获得您想要的拟合值。您需要在要平方的项周围使用 I(),如下例所示:
要从此使用中获取系数:
You can add a quadratic term in the forumla in lm to get the fit you are after. You need to use an I()around the term you want to square as in the example below:
To get the coefficients from this use:
我认为在 Excel 中这是不可能的,因为它们只提供获取线性回归系数的函数(
SLOPE
、INTERCEPT
、LINEST
)或对于指数级(GROWTH
、LOGEST
),尽管使用 Visual Basic 可能会更幸运。对于 R,您可以使用 coef 函数提取模型系数:
I dont think it is possible in Excel, as they only provide functions to get coefficients for a linear regression (
SLOPE
,INTERCEPT
,LINEST
) or for a exponential one (GROWTH
,LOGEST
), though you may have more luck by using Visual Basic.As for R you can extract model coefficients using the
coef
function:我猜你的意思是在 Excel 或 R 中绘制 X 与 Y 值,并在 Excel 中使用“添加趋势线”功能。在 R 中,您可以使用
lm
函数 来拟合数据的线性函数,这也为您提供了“r 平方”项(请参阅 链接页面)。I guess you mean that you plot X vs Y values in Excel or R, and in Excel use the "Add trendline" functionality. In R, you can use the
lm
function to fit a linear function to your data, and this also gives you the "r squared" term (see examples in the linked page).