1

まず、データセットをhttp://alexandervanloon.nl/survey_oss.csvからダウンロードしてから、次のスクリプトコンテンツを実行して、いくつかの散布図を取得してください。

# read data and attach it
survey <- read.table("survey_oss.csv", header=TRUE)
attach(survey)

# plot for inhabitants
png("scatterINHABT.png")
plot(INHABT, OSSADP, xlab="Inhabitants", ylab="Adoption of OSS", las=1)
abline(lm(OSSADP~INHABT)) # regression line (y~x)
dev.off()

# plot for inhabitants divided by 1000
png("scatterINHABT_divided.png")
plot(INHABT/1000, OSSADP, xlab="Inhabitants", ylab="Adoption of OSS", las=1)
abline(lm(OSSADP~INHABT)) # regression line (y~x)
dev.off()

# plot for inhabitants in logarithmic scale
png("scatterINHABT_log.png")
plot(INHABT, OSSADP, xlab="Inhabitants", ylab="Adoption of OSS", las=1, log="x")
abline(lm(OSSADP~INHABT)) # regression line (y~x)
dev.off()

# plot for inhabitants in logarithmic scale and divided by 1000
png("scatterINHABT_log_divided.png")
plot(INHABT/1000, OSSADP, xlab="Inhabitants", ylab="Adoption of OSS", las=1, log="x")
abline(lm(OSSADP~INHABT)) # regression line (y~x)
dev.off()

ご覧のとおり、最初の散布図で問題となるのは、R科学的記数法を使用することを決定し、外れ値のためにデータが奇妙に見えることです。そのため、x軸に数千人の住民を配置し、x軸にも対数目盛を使用させたいと考えています。

問題は2つあります。まず、住民を1000で割るだけで科学的記数法を取り除くことができますが、これにより、最初のプロットとは異なり、平坦な水平回帰直線が生成されます。プロット軸に科学的記数法を使用したくないなど、これを修正する他の方法があることは知っていますが、そこでのコードを自分の状況に適合させることができませんでした。

次に、x軸を対数目盛に切り替えると、回帰直線も平坦になります。グーグルは可能な解決策の最初の結果としてhttps://stat.ethz.ch/pipermail/r-help/2006-January/086500.htmlabline(lm(OSSADP~log10(INHABT)))を指摘し、そこで提案されているものを使用してみましたが、それは垂直回帰線を生成します。そして、両方を1000で割り、対数目盛を使用すると、線も水平になります。

私は数学や統計のバックグラウンドを持たない社会科学者なので、何か明らかなことを見逃したのではないかと心配しています。潜在的な助けをありがとうございました。

4

2 に答える 2

0

科学的記数法は少し前にRメーリングリストで取り上げられましたが、Rが科学的記数法に進むタイミングをどのように選択するかを制御できますoptions()$scipen

options(scipen=10)
plot(INHABT, OSSADP, xlab="Inhabitants", ylab="Adoption of OSS")

plot次に、1000で除算する場合の問題は、との両方で1000で除算しなかったことですabline。これはトリックを行います:

plot(INHABT/1000, OSSADP, xlab="Inhabitants", ylab="Adoption of OSS")
abline(lm(OSSADP~I(INHABT/1000))) # Fixed regression line.

sでは記号の意味が異なるためI、が必要です。/formula

また、lasパラメータは不要です。

于 2012-07-30T21:13:10.827 に答える