首先,我不太精通 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)
,但这没有用,并导致安装了新的系数。
听起来您想将拟合模型与文献中已知系数 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) 等其他指标来比较模型和已知模型的性能。