基于文献方程的模型

问题描述 投票:0回答:1

首先,我不太精通 R。我想将我的模型与文献中已有的方程进行比较。 我的模型如下所示:

lm(y ~ x1 + x2 + x3, data = train_df)
,并且已经适合我的数据。 最好,我想将我的模型与文献中已有的模型进行比较,如下所示:
y ~ a + bx1 + cx2 + dx3
。 我如何在不需要拟合任何数据的情况下写下这个已知公式作为模型?

我尝试运行以下代码

Model <- lm(y - a ~ offset(bx1)+ offset(0.89*cx2) + offset (dx3), data = df)
,但这没有用,并导致安装了新的系数。

r model model-fitting
1个回答
1
投票

听起来您想将拟合模型与文献中已知系数 a、b、c 和 d 的固定模型进行比较。在这种情况下,您不需要拟合另一个线性模型。相反,您可以编写一个函数,使用给定的系数计算预测值,并将这些预测与您自己的模型的预测进行比较。

这是一个使用虚构数据集和系数的示例:

1。创建一个虚构的数据集:

# Load libraries
library(tidyverse)

# Create a fictional dataset
set.seed(123)
train_df <- tibble(
  x1 = rnorm(100),
  x2 = rnorm(100),
  x3 = rnorm(100),
  y = 3 - 2 * x1 + 0.5 * x2 + 1.5 * x3 + rnorm(100, sd = 0.5)
)

2。适合您的模型:

# Fit your model
my_model <- lm(y ~ x1 + x2 + x3, data = train_df)

3。把已知的公式写成函数:

# Replace a, b, c, and d with the known coefficients from the literature
a <- 1
b <- -1
c <- 0.9
d <- 1.4

known_model_function <- function(x1, x2, x3) {
  a + b * x1 + c * x2 + d * x3
}

4。计算两个模型的预测并进行比较:

# Calculate predictions
train_df <- train_df %>%
  mutate(my_model_pred = predict(my_model),
         known_model_pred = known_model_function(x1, x2, x3))

5。绘制结果:

# Plot the results
ggplot(train_df) +
  geom_point(aes(x = my_model_pred, y = known_model_pred)) +
  geom_abline(intercept = 0, slope = 1, linetype = "dashed", color = "red") +
  labs(title = "Comparison of Predictions: My Model vs. Known Model",
       x = "My Model Predictions",
       y = "Known Model Predictions")

这将创建一个散点图,将您的模型的预测与文献中的已知模型进行比较。如果点落在虚线附近,则表明您的模型的预测与已知模型的预测相似。

此外,如果您有测试数据集,您还可以使用均方误差 (MSE) 或平均绝对误差 (MAE) 等其他指标来比较模型和已知模型的性能。

© www.soinside.com 2019 - 2024. All rights reserved.