在Base R中实现代数方程结果不符的技术求助
R代数方程实现结果不符的问题排查
我是R代数方程的初学者,正在尝试在Base R中实现指定方程。尽管编写代码时已尽可能严谨,但预期结果应为0.050865,实际却得到11.43653,找不到问题所在。
原代码:
delta_T=0.1522 n=18 NT=324 NC=162 p=0.264 N=NT+NC V_T2 = ((NT+NC)/(NT*NC))*(1 + ((n - 1)*p)) + ( delta_T^2 * ( (((N - 2)*(1-p)^2 ) + (n*(N - 2*n)*p^2) + (2* (N - 2*n) * p * (1 - p)) ) / (2* (N-2)) * ( (N-2) - (2* (n-1)*p) ) ) ) V_T2 # > [1] 11.43653 BUT I expect the answer to be 0.050865
问题根源
代码中delta_T²对应的项出现运算顺序错误:原方程中这部分的分母是2*(N-2) - 2*(n-1)*p,但你误将其拆分为除以2*(N-2)后再乘以(N-2 - 2*(n-1)*p),这完全改变了运算逻辑,导致结果被大幅放大。
修正后的代码
delta_T=0.1522 n=18 NT=324 NC=162 p=0.264 N=NT+NC V_T2 = (N/(NT*NC))*(1 + (n - 1)*p) + delta_T^2 * ( ((N - 2)*(1-p)^2 + n*(N - 2*n)*p^2 + 2*(N - 2*n)*p*(1 - p)) / (2*(N-2) - 2*(n-1)*p) ) V_T2 # > [1] 0.05086503
运行修正后的代码即可得到预期结果0.050865。
内容的提问来源于stack exchange,提问作者Simon Harmel
相关产品推荐
相关产品推荐

