- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 ggpmisc
包在绘图中显示线性回归模型。如果 p 值小于 0.2,我只希望在图中显示回归线、p 值和 r2 值。
有谁知道有没有办法根据p值来选择显示这些东西?
这是情节的代码:
library(ggpmisc)
library(ggplot2)
formula <- y~x
ggplot(df, aes(carbon,
acetone,
fill=soil_type)) +
geom_smooth(method = "lm",
formula = formula,
color="black") +
geom_point(aes(shape=soil_type,
color=soil_type,
size=soil_type)) +
scale_fill_manual(values=c("green3", "brown")) +
scale_color_manual(values=c("black", "black")) +
scale_shape_manual(values=c(21, 24))+
scale_size_manual(values=c(2.7, 2.0))+
labs(shape="soil_type",
color="soil_type") +
theme_bw() +
facet_wrap(~days,
ncol = 2)+
stat_poly_eq(
aes(label = paste(stat(adj.rr.label),
stat(p.value.label),
sep = "*\", \"*")),
formula = formula,
rr.digits = 2,
p.digits = 1,
parse = TRUE,size=3.5)
这是数据集:
df <- structure(list(carbon = c(1.4, 0.8, 1.6, 0.1, 0.4, 0.4, 0.4,
1.3, 0.4, 1.1, 0.2, 1, 0.4, 0.4, 0.5, 0.8, 0.1, 0.5, 0.4, 0.6,
1.1, 0.6, 0.2, 0.2, 0.4, 0.1, 0.3, 0.5, 1.4, 0.3, 0.3, 1.1, 0.3,
0.7, 0.4, 0.4, 1.1, 0.1, 0.6, 1.3, 0.1, 1.6, 0.4, 0.5, 0.5, 1.2,
0.5, 0.5, 1.4, 0.8, 1.6, 0.1, 0.4, 0.4, 0.4, 1.3, 0.4, 1.1, 0.2,
1, 0.4, 0.4, 0.5, 0.8, 0.1, 0.5, 0.4, 0.6, 1.1, 0.6, 0.2, 0.2,
0.4, 0.1, 0.3, 0.5, 1.4, 0.3, 0.3, 1.1, 0.3, 0.7, 0.4, 0.4, 1.1,
0.1, 0.6, 1.3, 0.1, 1.6, 0.4, 0.5, 0.5, 1.2, 0.5, 0.5), days = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 10L,
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L,
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L,
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L,
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L), soil_type = c("organic",
"mineral", "organic", "mineral", "mineral", "mineral", "mineral",
"organic", "mineral", "organic", "mineral", "mineral", "mineral",
"mineral", "mineral", "mineral", "mineral", "mineral", "mineral",
"mineral", "organic", "mineral", "mineral", "mineral", "mineral",
"mineral", "mineral", "mineral", "organic", "mineral", "mineral",
"organic", "mineral", "mineral", "mineral", "mineral", "organic",
"mineral", "mineral", "organic", "mineral", "organic", "mineral",
"mineral", "mineral", "organic", "mineral", "mineral", "organic",
"mineral", "organic", "mineral", "mineral", "mineral", "mineral",
"organic", "mineral", "organic", "mineral", "mineral", "mineral",
"mineral", "mineral", "mineral", "mineral", "mineral", "mineral",
"mineral", "organic", "mineral", "mineral", "mineral", "mineral",
"mineral", "mineral", "mineral", "organic", "mineral", "mineral",
"organic", "mineral", "mineral", "mineral", "mineral", "organic",
"mineral", "mineral", "organic", "mineral", "organic", "mineral",
"mineral", "mineral", "organic", "mineral", "mineral"), acetone = c(0.9,
0.7, 0.5, 44.4, 44.2, 9.7, 66, 3.3, 8.6, 26.8, 111.4, 14.5, 40.7,
23.2, 51.6, 3.5, 64.3, 9.8, 48.5, 39.4, 0.2, 24.2, 55.3, 30.2,
28.9, 63.6, 80.7, 50.4, 0.9, 34.4, 102.2, 2.8, 16.5, 9.7, 32.1,
124.4, 3.7, 56.8, 10.6, 0.7, 41.1, 1.3, 62.5, 1.1, 86.3, 0.1,
2.7, 5, 0.1, 0.1, 0.1, 179.1, 60.9, 2.6, 65.3, 14.7, 0, 34.9,
133.7, 0, 56, 36.2, 2, 0.2, 44.9, 24.5, 123.8, 26.5, 0.1, 0.2,
23.6, 146.3, 0.3, 169.2, 164.4, 30, 0, 0, 123.1, 0.2, 3.1, 58,
0, 0.1, 0, 44.9, 1, 0, 102.6, 3.9, 91.4, 1.3, 21.8, 0.1, 0.6,
1.8)), row.names = c(NA, -96L), class = "data.frame")
新df
new_df <- structure(list(log10_carbon_content_pct = c(1.37049458496569,
0.832668550451795, 1.59213788019068, 0.145507171409663, 0.446381812222442,
0.439569517147175, 0.422589839851482, 1.28870743057217, 0.400192488592576,
1.09659720835789, 0.241297387109993, 0.961610908091281, 0.398026858883686,
0.392257161341674, 0.453700473359772, 0.806451323247262, 0.11544408343624,
0.495474955889315, 0.354492600589436, 0.61526599889915, 1.14182589451108,
0.600537294364469, 0.160768561861128, 0.180699201296035, 0.447002898466162,
0.104657791008796, 0.276806345628763, 0.530903734802764, 1.41408715182753,
0.272305844402086, 0.250175948083925, 1.12073840554294, 0.323045735481701,
0.652971172017589, 0.373463721632369, 0.378942698613437, 1.13800253645643,
0.0874264570362855, 0.601027315144485, 1.34486364979713, 0.139721704815204,
1.60809259256346, 0.379305517750582, 0.51215053692203, 0.466496903744401,
1.23437806425139, 0.541766399511599, 0.471365065418019, 1.37049458496569,
0.832668550451795, 1.59213788019068, 0.145507171409663, 0.446381812222442,
0.439569517147175, 0.400192488592576, 1.09659720835789, 0.241297387109993,
0.961610908091281, 0.398026858883686, 0.392257161341674, 0.453700473359772,
0.806451323247262, 0.11544408343624, 0.495474955889315, 0.354492600589436,
0.61526599889915, 1.14182589451108, 0.600537294364469, 0.160768561861128,
0.180699201296035, 0.447002898466162, 0.104657791008796, 0.276806345628763,
0.530903734802764, 1.41408715182753, 0.272305844402086, 0.250175948083925,
1.12073840554294, 0.323045735481701, 0.652971172017589, 0.373463721632369,
0.378942698613437, 1.13800253645643, 0.0874264570362855, 0.601027315144485,
1.34486364979713, 0.139721704815204, 1.60809259256346, 0.379305517750582,
1.23437806425139, 0.541766399511599, 0.471365065418019), daysincubated4 = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 94L,
94L, 94L, 94L, 94L, 94L, 94L, 94L, 94L, 94L, 94L, 94L, 94L, 94L,
94L, 94L, 94L, 94L, 94L, 94L, 94L, 94L, 94L, 94L, 94L, 94L, 94L,
94L, 94L, 94L, 94L, 94L, 94L, 94L, 94L, 94L, 94L, 94L, 94L, 94L,
94L, 94L, 94L, 94L), soil_type = c("organic", "mineral", "organic",
"mineral", "mineral", "mineral", "mineral", "organic", "mineral",
"organic", "mineral", "mineral", "mineral", "mineral", "mineral",
"mineral", "mineral", "mineral", "mineral", "mineral", "organic",
"mineral", "mineral", "mineral", "mineral", "mineral", "mineral",
"mineral", "organic", "mineral", "mineral", "organic", "mineral",
"mineral", "mineral", "mineral", "organic", "mineral", "mineral",
"organic", "mineral", "organic", "mineral", "mineral", "mineral",
"organic", "mineral", "mineral", "organic", "mineral", "organic",
"mineral", "mineral", "mineral", "mineral", "organic", "mineral",
"mineral", "mineral", "mineral", "mineral", "mineral", "mineral",
"mineral", "mineral", "mineral", "organic", "mineral", "mineral",
"mineral", "mineral", "mineral", "mineral", "mineral", "organic",
"mineral", "mineral", "organic", "mineral", "mineral", "mineral",
"mineral", "organic", "mineral", "mineral", "organic", "mineral",
"organic", "mineral", "organic", "mineral", "mineral"), log10_acetone_c = c(0.00926846768640111,
0.00722297480690438, 0.00476160511452692, 0.444394072789671,
0.442046700697262, 0.0969444813777115, 0.659755819077841, 0.0331353719785704,
0.0860951658767628, 0.268398621135863, 1.11425178483619, 0.144553061208862,
0.406832035925707, 0.23171358353469, 0.516127469481814, 0.0348431782930108,
0.643065970146376, 0.0976949557752846, 0.485466415318889, 0.394413062169997,
0.00215649305508422, 0.241895264091051, 0.553024436602299, 0.302071278712034,
0.289062005904557, 0.63551683217124, 0.806576564543876, 0.504060450046605,
0.00875624846772753, 0.343705138058693, 1.02196979128145, 0.0275595437157376,
0.165301609757072, 0.0968005281885054, 0.321248914837189, 1.2444284170588,
0.0365188178564554, 0.567626974656115, 0.10556180687771, 0.00690130440471077,
0.411060711247439, 0.0126107339499284, 0.625415265123349, 0.0107804497649973,
0.863015429856585, 0.000900918219072745, 0.0266090695624902,
0.0503551827004673, 0.000268027005920481, 0.000469317124751776,
3.95824821597101e-05, 0.00441758233902833, 0.00236289505353141,
0.00113488982479906, 0, 0, 0, 0, 0.0531046200284991, 0, 0, 0.000214196723493331,
0.00302534713027796, 0.000436083384348923, 0.000226218782648512,
0.00292979624099701, 0.00124508843867096, 0, 0.0286531848530279,
0.0134556110640359, 0, 0, 0, 0.0104783275343697, 0.0154919389302452,
0.0197930173217508, 0, 0, 0, 0, 0, 0, 0.00051087017306838, 0.000186632771190318,
0.00500797053508424, 0, 0.318561145793628, 0, 0, 0.0126117092437348,
0.00699751577956711, 0)), row.names = c(NA, -92L), class = "data.frame")
names = c(0,0) #Create a starting point of a matrix for the group names
#For each group, run a lm to find if pvalue < 0.2
for(i in unique(new_df$daysincubated4)){
for(j in unique(new_df$soil_type)){
lm = summary(lm(log10_acetone_c~log10_carbon_content_pct, new_df[new_df$daysincubated4==i & new_df$soil_type==j,]))
p = pf(lm$fstatistic[1], lm$fstatistic[2], lm$fstatistic[3], lower.tail=FALSE)
if(p < 0.2){names = rbind(names, c(i,j))} #Get the groups that pass
}
}
names = names[-1,] #Remove starting point
new_df2 = new_df[new_df$daysincubated4%in%names[,1] & new_df$soil_type%in%names[,2],]
formula <- y~x
(acetone_c_vs_cc <- ggplot(new_df,
aes(log10_carbon_content_pct,
log10_acetone_c,
fill=soil_type)) +
geom_smooth(method = "lm",
formula = formula, color="black", data = new_df2) +
geom_point(aes(shape=soil_type, color=soil_type, size=soil_type)) +
scale_fill_manual(values=c("#00AFBB", "brown")) +
scale_color_manual(values=c("black", "black")) +
scale_shape_manual(values=c(21, 24))+
scale_size_manual(values=c(2.4, 1.7))+
labs(shape="soil_type", color="soil_type") +
labs(x = "Soil organic carbon (%)",
y = "Emission (umol/g dw SOC/h)",
title = "Acetone vs Carbon content",
subtitle = "Emission and carbon data has been log10 transformed") +
theme_bw() +
facet_wrap(~daysincubated4,
ncol = 4)+
stat_poly_eq(data = new_df2,
aes(label = paste(stat(adj.rr.label),
stat(p.value.label),
sep = "*\", \"*")),
formula = formula,
rr.digits = 2,
p.digits = 1,
parse = TRUE,size=3.5))
最佳答案
我不确定这是否是最好的方法,但您可以手动运行 lm 来检查您的情况,然后子集 df 以仅使用通过组的观察结果:
首先,检查条件:
names = c(0,0) #Create a starting point of a matrix for the group names
#For each group, run a lm to find if pvalue < 0.2
for(i in unique(df$days)){
for(j in unique(df$soil_type)){
lm = summary(lm(acetone~carbon, df[df$days==i & df$soil_type==j,]))
p = pf(lm$fstatistic[1], lm$fstatistic[2], lm$fstatistic[3], lower.tail=FALSE)
if(p < 0.2){names = rbind(names, c(i,j))} #Get the groups that pass
}
}
names = names[-1,] #Remove starting point
现在,创建 df 的子集,并将其作为 data
参数传递给 geom_smooth
和 stat_poly_eq
:
df2 = df[df$days%in%names[,1] & df$soil_type%in%names[,2],]
ggplot(df, aes(carbon,
acetone,
fill=soil_type)) +
geom_smooth(method = "lm",
formula = formula,
color = "black",
data = df2) +
geom_point(aes(shape=soil_type,
color=soil_type,
size=soil_type)) +
scale_fill_manual(values=c("green3", "brown")) +
scale_color_manual(values=c("black", "black")) +
scale_shape_manual(values=c(21, 24))+
scale_size_manual(values=c(2.7, 2.0))+
labs(shape="soil_type",
color="soil_type") +
theme_bw() +
facet_wrap(~days,
ncol = 2)+
stat_poly_eq(
data = df2,
aes(label = paste(stat(adj.rr.label),
stat(p.value.label),
sep = "*\", \"*")),
formula = formula,
rr.digits = 2,
p.digits = 1,
parse = TRUE,size=3.5)
输出:
编辑 1
我对 df 进行子集化的部分是错误的(它之所以起作用,是因为有一组根本没有通过)。问题是 df$days%in%names[,1] & df$soil_type%in%names[,2]
不会逐对检查。所以我们实际上需要做一个循环:
#Create subset of df with groups that passed
new_df2 = numeric()
for(i in 1:nrow(names)){
new_df2 = rbind(new_df2,
new_df[new_df$daysincubated4%in%names[i,1] & new_df$soil_type%in%names[i,2],])
}
Obs:这会重新排列数据框,但我认为这对您来说不是问题。
输出:
Obs:0.2 p 值实际上是四舍五入的,所以它们应该通过。
关于r - 基于 p 值显示 LM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66274290/
我对 lm 的一些令人不安的行为感兴趣函数和相关的predict.lm R 中的函数。splines基础包提供函数bs生成 b 样条展开,然后可用于使用 lm 拟合样条模型,一个通用的线性模型拟合函数
我使用 minpack.lm 包中的 nls.lm 来拟合许多非线性模型。 由于初始参数估计时的奇异梯度矩阵,它经常在 20 次迭代后失败。 问题是当我在失败之前查看迭代(trace = T)时,我可
我有一个稍微进入饱和状态的外部校准曲线。所以我拟合了一个二阶多项式和一个测量样本的数据框,我想知道其中的浓度。 df_calibration=structure(list(dilution = c(0
我试图弄清楚默认 r plot 的残差与拟合图中使用了哪种平滑线对于 lm对象,所以我通过输入 ?plot.lm 查看了帮助页面,因为据我了解 .是如何定义不同对象类型的这些默认行为的。 正如预期的那
我正在尝试使用 R 创建一个线性模型并使用它来预测一些值。主题是棒球数据。如果我这样做: obp <- lm(offense$R ~ offense$OBP) predict(obp, newdata
我有两个变量,我想找到它们之间的相关性。问题是,根据我使用的方法,我似乎得到了不同的结果。 我知道的一种方法是使用 scale() 函数中的自变量和因变量运行 lm() 函数。 所以下面的变量看起来像
我在使用 C Makefile 时遇到了一些问题。 Makefile 的内容如下: PROJECT = 3D-ELM MPICC = mpicc CLAGS = -g -O3 LIBS = -lm S
我使用 caret R 包作为一个非常方便的建模包装器。虽然这是一个奇怪的用法,但在使用模型类型 =“lm”和“无”的交叉验证时,我在从模型中提取结果时遇到了一些麻烦。参见下面的示例: library
我想使用 lm 在 R 中拟合线性模型获得总模型拟合的系数估计值和 p 值 + p 值(类似方差分析),因此基本上来自 summary.lm 的输出. 问题是我想使用我自己的模型矩阵,而不是在调用 l
我建了一个 lm不使用 data= 的模型范围: m1 <- lm( mdldvlp.trim$y ~ gc.pc$scores[,1] + gc.pc$scores[,2] + gc.pc$sco
我是 R 的新手,我只是在学习 apply功能及其工作方式。我只想从 lm 中提取系数适合几年内产品颜色和品牌的变量 x。 我知道我可以创建一个 for 循环并按型号年份对数据进行子集化并拟合它,但我
如何计算 df 中存储在列中的多个变量的行向 lm()/系数? 我有这种数据(只是例子): set.seed(1) foo trialNumber Nr1 Nr2
我对在 ggplot2 中自动绘制模型很感兴趣。基于 discussion在 ggplot2 问题跟踪器上,我相信像下面这样的包装器应该可以工作。 geom_predict Warning: Com
我正在对多个属性(包括两个分类属性B和F)进行线性回归,但是我没有获得每个系数水平的系数值。 B具有9个级别,而F具有6个级别。当我最初运行模型(带有截距)时,我得到了8个B系数和5个F系数,我将其理
我一直试图弄清楚 subset R 中的参数 lm()功能有效。特别是以下代码对我来说似乎很可疑: data(mtcars) summary(lm(mpg ~ wt, data=mtcars))
我有以下数据框 > df df2 Economy ConditionA ConditionB ConditionC ConditionD 1 FRANCE 9
我正在使用来自包鼠标的男孩数据集的数据。当我对其中一个因子变量 (phb) 运行回归时,输出会显示这些因子,但给它们的名称与数据中的名称不同。我想知道为什么会这样。有没有办法纠正它? library(
通常,我和你(假设你不是机器人)很容易识别预测器是分类的还是定量的。例如,性别显然是分类的。您的最后一票可以分类。 基本上,我们可以轻松识别分类预测变量。但是当我们在 R 中输入一些数据时会发生什么,
我们从中得到了一个 lm 对象并想提取标准错误 lm_aaa<- lm(aaa~x+y+z) 我知道函数摘要、名称和系数。 但是,摘要似乎是手动访问标准错误的唯一方法。 你知道我怎么能输出se吗? 谢
我正在拟合一个模型来分解数据并进行预测。如果newdata中的predict.lm()包含模型未知的单个因子级别,则所有predict.lm()都会失败并返回错误。 有没有一种好方法可以让predic
我是一名优秀的程序员,十分优秀!