前言
起初听到这个我是不理解的,这不是统计学常识吗?划分三个程度:* ,** ,***。
头儿咋还要精确到小数位,不是画蛇添足吗?不了解归不了解,该干还是要干。
目录
- 前言
- 一、P值
- 二、生存分析
- 三、“锦上添花”
- 3.1 计算P值
- 3.2 带-次方的调整P值
- 3.3 不带次方的调整P值
- 3.4 小数点后无0的调整P值
- 四、用两个if解决
一、P值
关于显著性检验偷懒,找到一篇很典型的抛硬币可以回顾或预习,浅谈p值(p-value是什么)
P值 | P值解释 | 统计意义 |
>0.05 | 碰巧出现的可能性大于5%,不能否定原假设 | 无统计学差异 |
<0.05 | 碰巧出现的可能性小于5%,可以否定原假设 | 有统计学差异 |
<0.01 | 碰巧出现的可能性小于1%,可以否定原假设 | 有显著统计学差异 |
<0.001 | 碰巧出现的可能性小于0.1%,可以否定原假设 | 有极其显著统计学差异 |
二、生存分析
关于生存分析上篇有提过,单分组直接删掉循环即可,用for循环批量生存分析
像这样的生存曲线可以接受,但是“你这个不行,要看到具体P值”
虽然说不难,但是确实是有点迷惑行为,不过还得开整。
三、“锦上添花”
3.1 计算P值
继续用我的循环来记录,单分组把 data[,i] 换成具体分组变量即可
#survfit构建完生存模型后,用survdiff计算生存差异
surv_diff <- survdiff(Surv(data$time, data$status) ~ data[,i], data = data)
p.value <- 1 - pchisq(surv_diff$chisq, length(surv_diff$n) -1)#提p值
若直接添加到图上是这样的,预言一波“你这个不行,P值太长了”
3.2 带-次方的调整P值
像这种带-次方的可以缩小数位
lastnum <- substr(p.value, nchar(p.value) - 1 + 1, nchar(p.value))
lastnum <- as.numeric(lastnum)
再预言一波“你这个不行,太短了很奇怪”
3.3 不带次方的调整P值
小数点后三个0直接取有效小数
这里取三位
p.value <- signif(p.value,3)
3.4 小数点后无0的调整P值
像这种情况直接开摆就行了,P值0.05好歹也有一个0,做批量分析时这种直接不要了,所以显示多少位没啥区别
四、用两个if解决
交差的全部代码
surv_diff <- survdiff(Surv(data$time, data$status) ~ data[,i], data = data)#计算提取p值
p.value <- 1 - pchisq(surv_diff$chisq, length(surv_diff$n) -1)#打印p值
lastnum <- substr(p.value, nchar(p.value) - 1 + 1, nchar(p.value))#提取次方数
lastnum
lastnum <- as.numeric(lastnum)#转换数值类型
lastnum
if(lastnum<4)
{pvalue <- round(p.value,lastnum)}else
{pvalue <- round(p.value,3)}
if(pvalue<1)
{p.value <- signif(p.value,3)}else
{p.value <- pvalue}
然后画图改p值
pval=p.value
这样在循环出的每一张生存曲线的P值小数位都刚好合适了